提问人:kiwi_kimchi 提问时间:8/17/2023 最后编辑:kiwi_kimchi 更新时间:8/17/2023 访问量:36
匹配两个数据帧并计算匹配行在第一个数据帧中出现的次数
Matching two dataframes and counting the times a matched row appeared in the first dataframe
问:
我有两个数据帧( 和 )。df1
df2
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。df2
df1
df3
df3
应如下所示:
A Count
Girl 2
Boy 3
答:
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_辛奇我忘记了括号;)
评论