下面给出了两个 Dataframe
multi_df = pd.DataFrame({'multi_project_ID': ["Combo_1","Combo_2","Combo_3","Combo_4"],
'multi_items':[['Chips','Biscuits','Chocolates'],['Alcoholic Drinks','Juices','Fruits'],['Plants','Veggies','Chips'],['Cars']],
'multi_labels':[[1,2,3],[4,5,6],[8,9,10],[11]]})
single_df = pd.DataFrame({'single_project_ID': ["ABC_1","DEF_2","JKL_3","MNO_3"],
'single_items':[['Chips'],['Alcoholic Drinks'],['Biscuits'],['Smoking']],
'single_labels':[[1],[4],[8],[9]]})
我想做以下几点
a)检查multi_items
清单项目下是否存在single_items
清单项目。
b)如果是,则提取对应匹配项的multi_labels
和multi_project_id
c)如果没有项目存在/匹配,则输入NA
所以,我尝试了下面的方法,但是不起作用。我不知道从哪里开始。
print(single_df.groupby('single_labels').sum()['single_items'].apply(lambda x: list(set(x))).reset_index())
我希望我的输出如下所示
1条答案
按热度按时间ryhaxcpt1#
创建helper列
tmp
并将DataFrame.explode
用于移除列表,然后使用自定义函数聚合列表-仅用于重复值(长度更大,如1
):然后通过
str[0]
将single_items
转换为标量并赋值给index,因此可以使用DataFrame.join
: