df.update():使用来自另一个DataFrame的非NA值进行适当的修改。
注意:它在索引上对齐,没有返回值。
下面举个例子来说明一下这个函数的作用:
df1 = pd.DataFrame({
'A': [125,346,74,624,225,154,336,448],
'B': [14,None,None,11,73,None,23, 30],
})
print(df1)
结果如下:
A B
0 125 14.0
1 346 NaN
2 74 NaN
3 624 11.0
4 225 73.0
5 154 NaN
6 336 23.0
7 448 30.0
注意看df2的索引跟df1的有所不同
df2 = pd.DataFrame({
'B': [1111,1111,1111,12211,1331,22222],
})
df2 = df2.iloc[1:]
print(df2)
B
1 1111
2 1111
3 12211
4 1331
5 22222
现在我想把df2的B列数据更新到df1的B列,这个时候就可以用到update()这个函数了,具体的方法如下:
df1.update(df2)
print(df1)
结果如下:
A B
0 125 14.0
1 346 1111.0
2 74 1111.0
3 624 12211.0
4 225 1331.0
5 154 22222.0
6 336 23.0
7 448 30.0
由于更新,DataFrame的长度不会增加,只会更新匹配的索引/列标签上的值
update()函数还有一个overwrite参数,默认为 True
当 overwrite = True 时,df2的B列数据会全部更新到df1的B列
当 overwrite = False 时,df1的B列数据只有为空的值才会被df2的B列数据更新
df1.update(df2, overwrite = False)
print(df1)
结果如下:
A B
0 125 14.0
1 346 1111.0
2 74 1111.0
3 624 11.0
4 225 73.0
5 154 22222.0
6 336 23.0
7 448 30.0