pandas将一个dataframe的一列更新为另一个dataframe的内容

在工作中有时需要对某个表的内容进行更新,可以使用pandas进行更新。

  1. 待更新内容data1及获取更新内容的目标表data2
import pandas as pd
import numpy as np
data1 = pd.DataFrame(np.arange(0,25).reshape(5,5),columns= list('abcde'),index=list('mnopq'))
data2 = pd.DataFrame(np.arange(30,46).reshape(4,4),columns= list('abcd'),index=list('mnop'))
data2.loc[:,'a'] = np.arange(0,16,5)
>>> data1
    a   b   c   d   e
m   0   1   2   3   4
n   5   6   7   8   9
o  10  11  12  13  14
p  15  16  17  18  19
q  20  21  22  23  24
>>> data2
    a   b   c   d
m   0  31  32  33
n   5  35  36  37
o  10  39  40  41
p  15  43  44  45
  1. 如果data2中的a列值与data1的相同且data2中的b列值不为空,则将data1的b列更新为data2的b列值.
for r1 in range(data1.shape[0]):
    for r2 in range(data2.shape[0]):
        #只有data2的值不为空时才更新data1
        if (data1.iloc[r1]['a'] == data2.iloc[r2]['a']) and pd.isna(data2.iloc[r2]['b']) != True:
            #下面不能写为data1.iloc[r1]['b'],这样写数据不会更新
            data1.iloc[r1,data1.columns == 'b'] = data2.iloc[r2,data1.columns == 'b']

>>> data1
    a   b   c   d   e
m   0  31   2   3   4
n   5  35   7   8   9
o  10  39  12  13  14
p  15  43  17  18  19
q  20  21  22  23  24
  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值