如何使用Pandas将DataFrame中A6、A7行的np.nan值替换为另一个DataFrame的对应值
解决方法:将df指定行的NaN替换为df1的对应值
这里有两种简单高效的方法可以完成这个需求,直接来看代码和对应的解释:
方法1:通过.loc精准定位赋值
这种方法适合你明确知道要替换的行和列范围的场景,直接定位后赋值即可:
# 选取df中与df1匹配的行和列,赋值df1的内容 df.loc[df1.index, df1.columns] = df1
解释:df1的索引是A6、A7,列是4b、5c、6d,正好完全对应df中需要替换NaN的位置。通过.loc选取这些行和列的交叉区域,直接把df1的值赋过去,就能精准覆盖原来的NaN值。
方法2:使用pandas的update方法
如果你想更简洁地完成更新,update方法是专门干这个的——它会自动匹配两个DataFrame的索引和列,用df1的有效值覆盖df对应位置的内容:
# 用df1更新df的对应位置 df.update(df1)
解释:update方法会智能匹配两个DataFrame的索引和列交集,只更新那些在df1中存在的行和列的位置,而且只会用df1中的非NaN值(这里df1没有NaN)去替换df的值,完全符合你的需求。
替换后的效果示例
执行任意一种方法后,df的A6、A7行会变成这样:
3a 4b 5c 6d A6 12 1.0 2.0 3.0 A7 -32 3.0 4.0 5.0
其他行的内容不会受到影响。
内容的提问来源于stack exchange,提问作者TRex
相关产品推荐
相关产品推荐

