匹配两个数据帧并计算匹配行在第一个数据帧中出现的次数

Matching two dataframes and counting the times a matched row appeared in the first dataframe

提问人:kiwi_kimchi 提问时间:8/17/2023 最后编辑:kiwi_kimchi 更新时间:8/17/2023 访问量:36

问:

我有两个数据帧( 和 )。df1df2

df1看起来像这样:

A     B      C  

Girl  25     APPLE
Boy   10     SAMSUNG
Girl    10    LG
Boy   5      Ap
Boy  68      SAM

df2看起来像这样:

D           E        

APPLE      Ap 
SAMSUNG    Sam
LG         lg
GOOGLE     Go

我想在这两者之间进行索引匹配,以便我可以生成一个名为 .df3

如果 D 列或 E (in ) 可以在 中找到,则必须对它们进行计数并反映在 新生成的 DataFrame。df2df1df3

df3应如下所示:

A     Count

Girl   2
Boy    3
 
Python Pandas 索引 匹配 vlookup

评论


答:

1赞 mozway 8/17/2023 #1

isin 过滤,用 value_counts 计数。(可选)使用 str.casefold 使比较不区分大小写:

out = (df1.loc[df1['C'].str.casefold()
               .isin(df2[['D', 'E']].stack().str.casefold()),
              'A']
          .value_counts()
          .reset_index(name='Count')
       )

输出:

      A  Count
0  Girl      2
1   Boy      3

评论

0赞 kiwi_kimchi 8/17/2023
我收到此错误:TypeError:Series.isin() 需要 2 个位置参数,但给出了 3 个
0赞 mozway 8/17/2023
@kiwi_辛奇我忘记了括号;)