问题描述
我不确定标题的最佳方法。如果我有一个数据框和其中一列,可以称之为“标签”,它可以包含列表,也可以不包含列表。如果“标签”是一个列表,那么我想复制该行的次数与“标签”列中唯一项的重复次数相同,然后将该列中的项目替换为每一行的唯一项。
示例:
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