将带有列的大熊猫DF列到文件中,如何将其读回?

什里什·库尔哈里(Shirish Kulhari)

假设我有一个数据框,其中的一个列由列表填充,如下所示:

    c1    c2

0  "asd"  ["el1", "el2"]

1  "sdf"  ["el1", "el3", "el5"]

通过to_csv函数将其写入到csv中,自然会将列表输出为字符串。read_csv例如,当我再次通过读取文件时,第一个列表将被读取为"[el1, el2]"而不是预期的["el1", "el2"]因此,如果我运行split命令,则预期的输出是,"el1", "el2"但是我得到的却是"[", "e", "l", "1", ",", "e", "l", "2", "]"

我该如何规避?如何干净地编写和读取熊猫数据框的列表列?

耶斯列尔

您可以使用转换列表填充的列ast.literal_eval

import ast

df['c2'] = df['c2'].apply(ast.literal_eval)
print (df)
    c1               c2
0  asd       [el1, el2]
1  sdf  [el1, el3, el5]

另一个想法是使用convertersread_csv与拉姆达功能ast.literal_eval

import ast
from io import StringIO

temp="""c1;c2
"asd";["el1", "el2"]
"sdf";["el1", "el3", "el5"]"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
con = lambda x: ast.literal_eval(x)
df = pd.read_csv(StringIO(temp), sep=';', converters = {'c2':con})

print (df)
    c1               c2
0  asd       [el1, el2]
1  sdf  [el1, el3, el5]

如果写数据到CSV,总是被conveterted为字符串,为避免有可能使用另一种格式,如泡菜和使用DataFrame.to_pickleread_pickle

df.to_pickle('file.pkl')

df = pd.read_pickle('file.pkl')
print (df)
    c1               c2
0  asd       [el1, el2]
1  sdf  [el1, el3, el5]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将带有多个标头的CSV文件读入大熊猫中的两个DataFrame中,一个带标头,一个带某些标头的数据?

大熊猫中的列表列到元组列

大熊猫将带有元组的数据框列扩展为多个列和行

如何将大熊猫列分为带有字符串和整数的两列

将带有字典的大熊猫列表类型列映射为两个最大值

计算大熊猫DataFrame中带有NaN的行数?

大熊猫切片在列中带有冒号

大熊猫:如何将数据框的所有数字列转换为对数

批处理:如何将带有特殊字符的set / p回显到文件中?

大熊猫的行程将列的类型更改为浮动。如何将其转换回原始类型?

从带有嵌套词典的大熊猫

如何检查日期列在特定月份的大熊猫中?

在大熊猫中,应该如何添加年龄范围列?

如何在没有聚合功能的大熊猫中对列进行分组?

如何将包含垃圾桶的熊猫数据帧写入文件,以便可以将其读回熊猫?

获取有关每一行的统计信息并将其放入新列中。大熊猫

如何转用大熊猫完整的文件

如何将带有很多注释行的数据文本文件加载到熊猫中?

合并大熊猫中的列?

列与字典中的大熊猫?

大熊猫从列中删除值

融化大熊猫中的分类列

大熊猫中列的条件求和

PANDAS:将带有日期时间索引的大熊猫系列切入过去的n行

如何将某些内容保存到列中并将其读回对象

如何在大熊猫中阅读带有空单元格的漂亮印刷表?

大熊猫分配列值取决于df中的另一列

如何量化大熊猫中的数据?

在大熊猫中如何调用函数