一定条件下不同Pandas Dataframe 的计数值

xqk2d5yq  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(134)

我有类似的数据集:
第一个月
| 连|日期|动作呼叫|行动_访问|波|
| - ------| - ------| - ------| - ------| - ------|
| A类|二○二二年十月一日|是的|没有|没有|
| 乙|二○二二年十月一日|是的|没有|是的|
| C级|二○二二年十月一日|没有|没有|没有|
| 乙|二○二二年十月二日|没有|是的|没有|
| A类|二○二二年十月二日|没有|是的|没有|
df2
| 连|日期|动作呼叫|行动_访问|波|
| - ------| - ------| - ------| - ------| - ------|
| D级|二○二二年十一月一日|是的|没有|没有|
| 乙|二○二二年十一月一日|是的|没有|是的|
| C级|二○二二年十一月一日|是的|是的|没有|
| D级|二○二二年十一月二日|没有|是的|没有|
| A类|二○二二年十一月二日|没有|是的|是的|
我想统计podf1中为"否"但在df2中也存在的公司数量。
我试着用这个代码:
int_df = len(set(df2['company']).intersection(df1['po'].eq('no').groupby(df1['company'])))
但它返回以下错误:
unhashable type: 'Series'

    • 我的预期输出:**

2、(A、C)

  • 注:(A,C)不需要打印,因为我实际上只想要公司的编号。

什么是最好的代码,我的预期输出?谢谢你提前!

5gfr0r5j

5gfr0r5j1#

我将首先用isin过滤基于df2的公司,然后用groupy.all聚合以仅用"否"标识公司,并且sum

(df1.loc[df1['company'].isin(df2['company']), 'po']
    .eq('No')
    .groupby(df1['company']).all()
    .sum()
)

输出:2

相关问题