关于python:将包含长列表的Pandas df保存为csv文件

Save Pandas df containing long list as csv file

我正在尝试将pandas数据帧保存为.csv文件。 目前我的代码如下所示:

1
2
with open('File.csv', 'a') as f:
        df.to_csv(f, header=False)

保存有效,但问题是我的数据框中的列表只是压缩为[first,second,...,last],并且中间的所有条目都被丢弃。 如果我只看原始数据帧,那么所有条目都在那里。 有什么方法可以将列表转换为包含所有元素的字符串(str(df)也丢弃中间元素)或者如何在csv表的单元格中保存完整的numpy数组?

谢谢您的帮助,
维维安


您的代码应该正常工作。我无法重现描述的行为。

这里有一点"熊猫"版本:

1
df.to_csv('File.csv', header=False, mode='a')

PS注意mode='a'(追加)参数......

更新:

如何在显示/打印DF时删除省略号:

1
2
with pd.option_context("display.max_columns", 0):
    print(df)


我在保存数据帧时遇到了问题。我有一个数据框,其中一些列包含列表作为其元素。当我使用df.to_csv保存datfarme然后使用df.read_csv从磁盘读取它时,列表和数组变成了一串字符。因此[1,2,3]被转换为'[1,2,3]'。当我使用HDF5格式时,问题就解决了。

如果您将数据框称为df_temp,则可以使用:

1
2
store = pd.HDFStore('store.h5')
store['df'] = df_temp

以HDF5格式保存数据帧,您可以使用以下命令读取它:

1
2
store = pd.HDFStore('store.h5')
df_temp_read = store['df']

你可以看看这个答案。我还应该提一下,pickle对我不起作用,因为我从文件中读取时丢失了列名。也许我做错了什么,但除此之外,如果你计划在不同的python版本中读取文件,pickle可能会导致兼容性问题。


您可以使用join方法转换列表中的元素。

例:

1
2
3
lst =  ['Hello!','I','am', 'Pandas User','.']
strng = ' '.join(lst)
print (strng)

希望这对你有所帮助。