You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Pandas处理CSV多列元素数量不匹配时的explode报错问题

解决Pandas多列explode元素数量不匹配的问题

问题描述

使用Pandas的explode函数同时处理CSV中的两列数据时,因两列拆分后的元素数量不一致,触发报错:ValueError: 列必须具有匹配的元素数量。

输入数据

FruitColorOrigin
AppleRed, GreenUSA; Canada
PlumPurpleUSA
MangoRed, YellowMexico; USA
PepperRed, GreenMexico

期望输出

FruitColorOrigin
AppleRedUSA
AppleGreenCanada
PlumPurpleUSA
MangoRedMexico
MangoYellowUSA
PepperRedMexico
PepperGreenMexico

已知规则

  • 仅含1个Color值的行,对应的Origin值数量不超过1个
  • Color值以, 分隔,Origin值以; 分隔

当前报错代码

import pandas as pd
df = pd.read_csv('fruits.csv')
df['Color'] = df['Color'].str.split(', ')
df['Origin'] = df['Origin'].str.split('; ')
df = df.explode(['Color','Origin'])
df.to_csv('explode_fruit.csv', encoding='utf-8')

解决方案

方法一:补全短列表后使用多列explode

利用已知规则,当Origin仅含1个元素时,将其重复至与Color列表长度一致,使两列元素数量匹配后再执行explode:

import pandas as pd

df = pd.read_csv('fruits.csv')
# 拆分Color和Origin列
df['Color'] = df['Color'].str.split(', ')
df['Origin'] = df['Origin'].str.split('; ')

# 补全Origin列表:若Origin长度为1,则重复至与Color长度相同
df['Origin'] = df.apply(
    lambda row: row['Origin'] * len(row['Color']) if len(row['Origin']) == 1 else row['Origin'],
    axis=1
)

# 执行多列explode并保存结果
df = df.explode(['Color', 'Origin'])
df.to_csv('explode_fruit.csv', encoding='utf-8', index=False)

方法二:自定义行展开逻辑(不依赖explode多列功能)

通过自定义函数处理每行的Color与Origin匹配逻辑,直接生成目标行数据,再拼接为DataFrame:

import pandas as pd

df = pd.read_csv('fruits.csv')

def expand_row(row):
    colors = row['Color'].split(', ')
    origins = row['Origin'].split('; ')
    # 处理长度不匹配:Origin仅1个时重复填充
    if len(origins) == 1:
        origins = origins * len(colors)
    # 返回每行对应的拆分结果
    return [{'Fruit': row['Fruit'], 'Color': c, 'Origin': o} for c, o in zip(colors, origins)]

# 逐行处理并收集所有展开后的数据
expanded_rows = []
for _, row in df.iterrows():
    expanded_rows.extend(expand_row(row))

# 转换为DataFrame并保存
result_df = pd.DataFrame(expanded_rows)
result_df.to_csv('explode_fruit.csv', encoding='utf-8', index=False)

内容的提问来源于stack exchange,提问作者KS1993

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:05:14