gpt4 book ai didi

python - 如何比较两个不同数据框中的两列并计算出现次数

转载 作者:行者123 更新时间:2023-12-02 16:12:51 26 4
gpt4 key购买 nike

考虑以下两个数据框:

dic_1 = {'intA': {0: 'A', 1: 'B', 2: 'A', 3: 'D', 4: 'A', 5: 'F', 6: 'C', 7: 'H', 8: 'D', 9: 'X', 10: 'A', 11: 'C', 12: 'X'}, 'intB': {0: 'FG', 1: 'GH', 2: 'SD', 3: 'KJ', 4: 'FG', 5: 'WE', 6: 'NB', 7: 'GH', 8: 'AA', 9: 'ZX', 10: 'QQ', 11: 'OI', 12: 'XX'}}
df_1 = pd.DataFrame(dic_1)
df_1


intA intB
0 A FG
1 B GH
2 A SD
3 D KJ
4 A FG
5 F WE
6 C NB
7 H GH
8 D AA
9 X ZX
10 A QQ
11 C OI
12 X XX

dic_2 = {'ref': {0: 'AA',
1: 'GH',
2: 'CD',
3: 'FG',
4: 'XX',
5: 'TY',
6: 'ZX',
7: 'SD',
8: 'KJ',
9: 'IU'}}
df_2 = pd.DataFrame(dic_2)
df_2
ref
0 AA
1 GH
2 CD
3 FG
4 XX
5 TY
6 ZX
7 SD
8 KJ
9 IU

我想要的是一个看起来像这样的结果数据框:

  symbol    count
0 A 3
1 B 1
2 D 2
3 F 0
4 C 0
5 H 1
6 X 2

逻辑:对于df_1中'intA'列中的每一项,如果df_1中'intB'列中的对应项存在于df_2中'ref'列中,则将计数加一。例如,'intA'中的'A'出现了四次,但它在'intB'列中的对应项在df_2中的'ref'中只有三个,因此计数为3。

最佳答案

isin 创建一个 bool 掩码来测试 intB 列中的元素是否与 ref 列中的任何元素匹配,然后 intA

中每个唯一值在此掩码中的 True 值求和
df_1.set_index('intA')['intB'].isin(df_2['ref'])\
.sum(level=0).rename_axis('symbol').reset_index(name='count')

  symbol  count
0 A 3
1 B 1
2 D 2
3 F 0
4 C 0
5 H 1
6 X 2

关于python - 如何比较两个不同数据框中的两列并计算出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67580614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com