我有两个数据帧:
df1 = pd.DataFrame({"ID":[1, 2, 3, 4],
"item":[[22, 78], [78], [78,79], [78,456,254]}
df2 = pd.DataFrame({"IDs":[1,2], [3], [1,3,4], [3,4]}
并且期望的输出是具有额外列的CCD_ 1,该额外列具有描述CCD_。理想情况下无重复,并按外观降序排列:
df2 = pd.DataFrame({"IDs":[1,2], [3], [1,3,4], [3,4],
"all_items":[78,22], [78], [78,79,22,456,254], [78,79,456,254]}
我猜我应该使用CCD_ 3来添加新的";all_items"列,并在第一步中使用CCD_ 4进行循环。我只是搞不清楚它是如何与Pandas中的列表列一起工作的。如果能得到解决方案,我将不胜感激。非常感谢。
您可以执行explode
+map
,然后groupby
获得unique
值
df2['new'] = df2['IDs'].explode().map(dict(zip(df1['ID'],df1['item']))).explode().groupby(level=0).unique()
df2
Out[47]:
IDs new
0 [1, 2] [22, 78]
1 [3] [78, 79]
2 [1, 3, 4] [22, 78, 79, 456, 254]
3 [3, 4] [78, 79, 456, 254]