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

调用Excel/CSV文件时Pandas explode函数无法正常工作求助

Pandas explode函数读取Excel后不生效的问题分析与解决

问题场景

执行以下代码后,生成的output2.xlsx数据和输入完全一致,explode未生效:

import pandas as pd
import os
os.getcwd()
os.chdir('C:/Users/nick/Documents/Python') # NOTE csv_filepath
df= pd.read_excel('output1.xlsx', usecols=['PartNumber', 'RefList'], index_col=False)
print(df.explode('RefList'))
file_name ='output2.xlsx'
df.to_excel(file_name)

输入文件output1.xlsx的数据:

PartNumberRefList
ramapple,orange
ravibanan,pinapple

但使用构造的含列表类型数据的DataFrame时,explode能正常工作:

import pandas as pd
import numpy as np
df = pd.DataFrame({'animals': [['koala', 'kangaroo', 'echidna'], 
                           ['sloth', 'alpaca'], 
                           ['zebra', 'lion', 'baboon']],
               'diet': [['herbivorous', 'herbivorous', 'carnivorous'], 
                        ['omnivorous', 'herbivorous'], 
                        ['herbivorous', 'carnivorous', 'omnivorous']],
               'country': ['Australia', 'Peru', 'Kenya']})
print(df)

原因分析

  • 从Excel/CSV读取的RefList列是字符串类型(如"apple,orange"),而explode函数仅对列表/数组/Series等可迭代类型的列生效。
  • 测试用的DataFrame中,animals列本身就是列表类型,所以explode可以正常拆分。
  • 代码中df.explode('RefList')仅打印了拆分结果,但没有将结果赋值回df,原DataFrame未被修改,保存的自然还是原始数据。

解决方案

先将字符串列转换为列表,再执行explode并更新DataFrame,最后保存:

import pandas as pd
import os

os.chdir('C:/Users/nick/Documents/Python')
# 读取Excel数据
df = pd.read_excel('output1.xlsx', usecols=['PartNumber', 'RefList'], index_col=False)
# 将逗号分隔的字符串拆分为列表
df['RefList'] = df['RefList'].str.split(',')
# 执行explode并覆盖原DataFrame
df = df.explode('RefList')
# 保存结果,index=False避免写入索引列
df.to_excel('output2.xlsx', index=False)

关键说明

  • str.split(','):将每个字符串按逗号分割成列表,满足explode的输入要求。
  • 必须将explode的结果重新赋值给df,否则原数据不会被修改。
  • 保存时添加index=False,防止额外的索引列被写入Excel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:55:55