我有一个看起来像这样的熊猫数据框:
COL data
line1 [A,B,C]
其中数据列中的项目可以是列表,也可以只是逗号分隔的元素。有没有简单的获取方式:
COL data
line1 A
line1 B
line1 C
我可以遍历列表并通过 python 手动复制行,但是这样做有什么神奇的 pandas 技巧吗?关键是如何自动复制行。
谢谢!
您可以编写一个简单的清理函数来使其成为一个列表(假设它不是逗号列表,并且您不能简单地使用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
恐怕我不认为熊猫专门迎合这种操纵。
您可以使用df.explode()
选项。请参阅文档。我相信这正是您需要的功能。