解决Pandas处理CSV多列元素数量不匹配时的explode报错问题
解决Pandas多列explode元素数量不匹配的问题
问题描述
使用Pandas的explode函数同时处理CSV中的两列数据时,因两列拆分后的元素数量不一致,触发报错:ValueError: 列必须具有匹配的元素数量。
输入数据
| Fruit | Color | Origin |
|---|---|---|
| Apple | Red, Green | USA; Canada |
| Plum | Purple | USA |
| Mango | Red, Yellow | Mexico; USA |
| Pepper | Red, Green | Mexico |
期望输出
| Fruit | Color | Origin |
|---|---|---|
| Apple | Red | USA |
| Apple | Green | Canada |
| Plum | Purple | USA |
| Mango | Red | Mexico |
| Mango | Yellow | USA |
| Pepper | Red | Mexico |
| Pepper | Green | Mexico |
已知规则
- 仅含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
相关产品推荐
相关产品推荐

