所以我尝试使用'to_excel'方法将Pandas DataFrame导出到.xlsx文件;我已经搜索过SO而没有找到任何似乎完全回答这个问题的问题。问题是数据框中的各个元素本身就是列表,让我说明一下:
假设我们有以下数据框:
data = [[['a','b','c']],[['a']],[[]],[['a', 'b']],[['a']]]
df = pd.DataFrame(data=data)
df.to_excel('data.xlsx')
'to_excel'调用会导致以下错误:
TypeError: Unsupported type <class 'list'> in write()
我以后通过以下方式解决了这个问题:
for key in df:
for i in df[key].index:
df[key].loc[i] = ' ,'.join(df[key].loc[i])
df.to_excel('data.xlsx')
然后在我的新程序中访问文件,如下所示:
newDF = pd.read_excel('data.xlsx')
for key in newDF:
for i in newDF[key].index:
newDF[key].loc[i] = str(newDF[key].loc[i]).split(',')
但显然这感觉很荒谬,我想相信有更好的方法。有没有人知道将包含列表的DataFrame保存到Excel文件的更有效方法,或者至少更有效地执行上述操作?
答案 0 :(得分:1)
不确定有效但更简洁的方法是调用apply
并传递' ,',join
作为要调用的函数:
In [75]:
data = [[['a','b','c']],[['a']],[[]],[['a', 'b']],[['a']]]
df = pd.DataFrame(data=data)
df[0].apply(' ,'.join)
Out[75]:
0 a ,b ,c
1 a
2
3 a ,b
4 a
Name: 0, dtype: object
除了将列表存储为数据元素是有问题的,应该避免IMO