python 检测数据质量,当两个dataFrame中相互判断,当A中出现后更新到B中然后保存到数据库中

def data_check_distinct(rows, distinct_rule, table_name):
    # 获取全部重复的数据
    duplicate_bool_all = rows.duplicated(subset=distinct_rule, keep=False)
    # 获取重复的第一行
    duplicate_bool_first = rows.duplicated(subset=distinct_rule, keep='first')
    repeat_all = rows.loc[duplicate_bool_all == True]
    repeat_first = rows.loc[duplicate_bool_first == False]
    df = pd.DataFrame()
    df2 = pd.DataFrame()
    df2['id'] = repeat_first.iloc[:, 0]
    df2['is_initialize'] = 'TRUE'
    s = df2.set_index('id')['is_initialize']
    df['id'] = repeat_all.iloc[:, 0]
    df['is_initialize'] = ''
    df['table_name'] = table_name
    df['is_initialize'] = df['id'].map(s).fillna(df['is_initialize']).astype(str)
    df['creattime'] = time_nyr(None)
    df.to_sql('repeating_data', con=engine(), index=False, if_exists='append', chunksize=10000)

rows是原始数据,

distinct_rule是字典校验是指的哪些字段判断重复distinct_rule =['xm','zjh','xb','csrq']

table_name是保存的表面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值