如何将 DataFrame 保存为列表而不是字符串 [重复]

Posted

技术标签:

【中文标题】如何将 DataFrame 保存为列表而不是字符串 [重复]【英文标题】:How can I save DataFrame as list and not as string [duplicate] 【发布时间】:2021-01-18 19:35:39 【问题描述】:

我创建了这个pd.DataFrame()。我想创建一个.csv 并保存为这个

                                                         0  1
0        [15921, 10, 82, 22, 202973, 368, 1055, 3135, 1...  0
1        [609, 226, 413, 363, 211, 241, 988, 80, 12, 19...  0
2        [22572, 3720, 233, 13, 827, 710, 512, 354, 1, ...  0
3                             [345, 656, 25, 2589, 6, 866]  0
4                                [29142, 8, 4141, 456, 24]  0
                                                   ... ..
1599995                         [256, 8, 80, 110, 25, 152]  4
1599996  [609039, 22, 129, 184, 163, 9419, 769, 358, 10...  4
1599997                       [140, 5715, 6540, 294, 1552]  4
1599998  [59, 22771, 189, 387, 4483, 13, 10305, 112231,...  4
1599999                [59, 15833, 200370, 609041, 609042]  4

但是通过做

data.to_csv("foo.csv", index=True)

问题是每个list 现在都保存为str。例如,第 3 行是

"[345, 656, 25, 2589, 6, 866]"

对于那些持怀疑态度的人,我试过type(row 3),它是str。第 2 列运行良好。

如何将每一行保存为list 而不是str?也就是说,如何将col 1的所有行保存为DataFrame而不是str

【问题讨论】:

这能回答你的问题吗? Pandas DataFrame stored list as string: How to convert back to list? @mikksu 对不起,它没有回答我的问题 【参考方案1】:

试试这个:

import pandas as pd

df = pd.DataFrame('a': ["[1,2,3,4]", "[6,7,8,9]"])
df['b'] = df['a'].apply(eval)
print(df)

b 列中的数据现在是一个数组。

           a             b
0  [1,2,3,4]  [1, 2, 3, 4]
1  [6,7,8,9]  [6, 7, 8, 9]

【讨论】:

谢谢!它起作用了,但我改变了一件事:df['a'] = df['a'].apply(eval)col a 更改为 listdf['b'] = df['b'].apply(eval)col b 做同样的事情

以上是关于如何将 DataFrame 保存为列表而不是字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SharedPreferences 中的数据保存并显示为列表?

如何将 DataFrame 列的值插入列表

将熊猫数据框保存到csv时如何保留numpy数组

将熊猫数据框保存到csv时如何保留numpy数组

如何将 pandas DataFrame 行保存为 JSON 字符串?

如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?