将一列字符串转换为 pandas 中的列表

新手上路,请多包涵

我在 pandas 数据框中的一个列的类型有问题。基本上,该列作为字符串保存在 csv 文件中,我想将其用作元组以便能够将其转换为数字列表。下面是一个非常简单的 csv:

 ID,LABELS
1,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)"
2,"(1.0,2.0,2.0,3.0,3.0,1.0,4.0)"

如果用函数“read_csv”加载它,我会得到一个字符串列表。我试图转换为列表,但我得到了字符串的列表版本:

 df.LABELS.apply(lambda x: list(x))

回报:

 ['(','1','.','0',.,.,.,.,.,'4','.','0',')']

关于如何做到这一点的任何想法?

谢谢你。

原文由 Guido Muscioni 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 530
2 个回答

您可以使用 ast.literal_eval ,这将为您提供一个元组:

 import ast
df.LABELS = df.LABELS.apply(ast.literal_eval)

如果您确实想要一个列表,请使用:

 df.LABELS.apply(lambda s: list(ast.literal_eval(s)))

原文由 llllllllll 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 str.stripstr.split

 df['LABELS'] = df['LABELS'].str.strip('()').str.split(',')

但如果没有 NaN 在这里, list comprehension 也工作得很好:

 df['LABELS'] = [x.strip('()').split(',') for x in df['LABELS']]

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题