我有df1,它包含一组特定的ID作为一列,而df2在每一行中包含一组ID(如下图所示)。 我想创建一个数据帧,其中包含df1中存在于df2的每一行中的ID的所有不同组合,并获得所有不同组合的计数。
df1=pd.DataFrame({'Id':["181","456","235","653","987","5","300"]})
df2=pd.DataFrame({'Tag Id':["213,435,181,954,987","456","215,435,181,754,987","213,12,432,300,653,987"})
让我们尝试爆炸
来分离DF1
中的标记ID
,然后合并
与DF1
并计数:
s = (df2['Tag Id'].str.split(',')
.explode()
.reset_index()
)
(df1.merge(s, left_on='Id', right_on='Tag Id')
.sort_values('Tag Id')
.groupby('index')
.agg(Combination=('Id',','.join))
['Combination']
.value_counts().reset_index()
)
输出:
index Combination
0 181,987 2
1 653,987,300 1
2 456 1