python提取两列数据对比_python-比较2个数据框中的行并计算相似列的数量

我相信您需要:

#cross join between both DataFrames

df = df2.assign(A=1).merge(df1.assign(A=1),on='A',suffixes=('','_')).drop('A',axis=1)

#join ID columns and set index

df.index = df.pop('ID_').astype(str) + '_' + df.pop('ID').astype(str)

df.index.name='ID'

print (df)

Hair Legs Feathers Hair_ Legs_ Feathers_

ID

1_21 1 2 0 1 0 0

2_21 1 2 0 1 2 1

3_21 1 2 0 0 2 1

1_22 1 0 1 1 0 0

2_22 1 0 1 1 2 1

3_22 1 0 1 0 2 1

cols = df.filter(regex='_$').columns

#compare rows for match and count True values by sum

df['count'] = df[cols.str[:-1]].eq(df[cols].rename(columns=lambda x: x[:-1])).sum(axis=1)

df = df.drop(cols,axis=1).reset_index()

print (df)

ID Hair Legs Feathers count

0 1_21 1 2 0 2

1 2_21 1 2 0 2

2 3_21 1 2 0 1

3 1_22 1 0 1 2

4 2_22 1 0 1 2

5 3_22 1 0 1 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值