我试图弄清楚如何解析包含列表的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)]
我现在怀疑这种方法处理数百万行的效率如何。
答案 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)