将包含列表的DataFrame导出到Excel

时间:2015-10-26 15:32:56

标签: python excel pandas dataframe

所以我尝试使用'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文件的更有效方法,或者至少更有效地执行上述操作?

1 个答案:

答案 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