解析pandas列中的列表

时间:2015-12-23 19:16:26

标签: python list pandas types

我试图弄清楚如何解析包含列表的pandas列:我的问题是这些被识别为字符串,而我希望它们被视为列表,以迭代它们。

这是我的单元格的示例:[('P105', 1), ('P31', 1), ('P225', 1), ('P70', 1)]

当我尝试迭代它时,我只逐个得到字符串中包含的字符(即[,(,',P等)。 如何让大熊猫“理解”这些是列表?

编辑:我找到了一种方法:我将ast.literal_eval应用于每一行。

示例:

line = month_statement['properties_claims'][12]
for i in line:
    print i

[
(
'
P
7
6
'
...

如果我使用ast.literal_eval,请改为:

line = ast.literal_eval(month_statement['properties_claims'][12])
line
Out[23]: 
[('P76', 1),
 ('P77', 1),
 ('P75', 1),
 ('P273', 1),
 ('P70', 1),
 ('P107', 1),
 ('P225', 1)]

我现在怀疑这种方法处理数百万行的效率如何。

2 个答案:

答案 0 :(得分:2)

我个人会将其分成更多列并迭代它们:

   df['col'].apply(lambda x : pd.Series(x.split(',')))

   df['col'].apply(lambda x : pd.Series( x.replace( '),' , ')&&' ).split('&&'))) 

答案 1 :(得分:1)

相当老的问题,但是我想这应该起作用:

import ast

df['col'].apply(lambda x : ast.literal_eval(x))

如果文件太大,则使用以下方式将数据读取成块pd.read_csv(...,cunksize=50000)