如何解决如果列包含列表,则复制数据帧的行的函数
我不确定标题的最佳方法。如果我有一个数据框和其中一列,可以称之为“标签”,它可以包含列表,也可以不包含列表。如果“标签”是一个列表,那么我想复制该行的次数与“标签”列中唯一项的重复次数相同,然后将该列中的项目替换为每一行的唯一项。
示例:
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28'],'Item': 'My_fake_item','Tags': [['A','B']],'Count': 3}
df = pd.DataFrame(df,columns=['Date','Item','Tags','Count'])
解决方法
例如,应用explode
方法
df_exploded = (
df.set_index(["Date","Item","Count"])
.apply(pd.Series.explode)
.reset_index()
)
将导致
df_exploded
>>>
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
,并且无需检查元素是否为列表或列上的
import pandas as pd
# create dummy dataframe
df = {'Date': ['2020-10-28','2020-11-01'],'Item': ['My_fake_item','My_other_item'],'Tags': [['A','B'],'C'],'Count': [3,5]}
df = pd.DataFrame(df,columns=['Date','Item','Tags','Count'])
将导致
Date Item Count Tags
0 2020-10-28 My_fake_item 3 A
1 2020-10-28 My_fake_item 3 B
2 2020-11-01 My_other_item 5 C
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。