提问者:小点点

使用Python创建数字组合并获取不同组合的计数


我有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"})


共1个答案

匿名用户

让我们尝试爆炸来分离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