有没有一种方法可以基于另一个数据帧添加NaN值?

时间:2020-07-28 15:15:40

标签: python pandas

说我有两个数据框: 原始:

     A    B    C
0  NaN  4.0  7.0
1  2.0  5.0  NaN
2  NaN  NaN  9.0

起诉:

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

(两者都是相同的数据帧,只是插补中填写了NaN)。

我想将NaN值重新引入到插补df列A中,这样看起来(填充B,C列,但A保留NaN值):

#      A    B    C
# 0  NaN  4.0  7.0
# 1  2.0  5.0  8.0
# 2  NaN  6.0  9.0


import pandas as pd
import numpy as np
dfImputation = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9]})

dfOrginal = pd.DataFrame({'A':[np.NaN,2,np.NaN],
                   'B':[4,5,np.NaN],
                   'C':[7,np.NaN,9]})


print(dfOrginal.fillna(dfImputation))

我没有得到想要的结果,因为它显然填写了所有值。有没有办法引入NaN值或为特定列填写NA?我不太确定获得预期结果的最佳方法。

2 个答案:

答案 0 :(得分:1)

您可以通过对传递给fillna操作的帧进行子设置来仅填充指定的列:

>>> dfOrginal.fillna(dfImputation[["B", "C"]])
     A    B    C
0  NaN  4.0  7.0
1  2.0  5.0  8.0
2  NaN  6.0  9.0

答案 1 :(得分:1)

选中update

df.update(im[['B','C']])
df
Out[7]: 
     A    B    C
0  NaN  4.0  7.0
1  2.0  5.0  8.0
2  NaN  6.0  9.0