说我有两个数据框: 原始:
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?我不太确定获得预期结果的最佳方法。
答案 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