我有一个像这样的pandas数据框:
COL data
line1 [A,B,C]
其中数据列中的项可以是列表,也可以是逗号分隔的元素。是否有 easy 获取方式:
COL data
line1 A
line1 B
line1 C
我可以遍历列表并通过python手动复制行,但是有没有一些 magic pandas技巧呢?关键是如何自动复制行。
谢谢!
答案 0 :(得分:7)
您可以编写一个简单的清理函数,使其成为一个列表(假设它不是逗号列表,您不能简单地使用ast.literal_eval
):
def clean_string_to_list(s):
return [c for c in s if c not in '[,]'] # you might need to catch errors
df['data'] = df['data'].apply(clean_string_to_list)
遍历行似乎是一个合理的选择:
In [11]: pd.DataFrame([(row['COL'], d)
for d in row['data']
for _, row in df.iterrows()],
columns=df.columns)
Out[11]:
COL data
0 line1 A
1 line1 B
2 line1 C
我担心我不认为大熊猫特别适合这种操纵。
答案 1 :(得分:1)
您可以使用df.explode()
选项。请参阅documentation。我相信这正是您需要的功能。