数据比对去重

import pandas as pd
import numpy as np
from collections import Counter

df = pd.read_excel(r'E:\Anaconda3\work\csv.xlsx')

# 求出a列存在,b列不存在的数据。
ab = [i for i in set(df["a"]) - set(df["b"]) if i is not np.nan]
# 求出b列存在,a列不存在的数据。
ba = [i for i in set(df["b"]) - set(df["a"]) if i is not np.nan]

a = Counter(df["a"])
b = Counter(df["b"])
# 统计出现的个数,以字典形式返回

xa = []
xb = []
ji = a.keys() & b.keys()
for i in ji:
    ai = a.get(i)
    bi = b.get(i)
    if ai > bi:
        count = ai-bi
        for k in range(count):
            xa.append(i)
    elif bi > ai:
        count = bi-ai
        for k in range(count):
            xb.append(i)

for val in ab:
    sa = a.get(val)
    if sa !=None:
        for coun in range(sa):
            xa.append(val)
for val in ba:
    sb = b.get(val)
    if sb !=None:
        for coun in range(sb):
            xb.append(val)
ds = pd.DataFrame([xa,xb]).T
ds.columns = ['xa','xb']
ds.to_excel(r'E:\Anaconda3\work\result.xlsx',index=False)

来源之知乎

https://www.zhihu.com/question/385996087/answer/1139595963

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值