我想基于df2填充df1。 方法之一是先使用合并,然后使用fillna,但我认为这不是一个好方法。
另一个是使用字典来处理它。
例如
df1=pd.DataFrame({'A':['Feb',np.nan,'Air','Flow','Feb',
'Beta','Cat','Feb','Beta','Air'],
'B':['s','s','t','s','t','s','t','t','t','t'],
'C':[5,4,3,2,1,7,6,5,4,3],
'D':[4,np.nan,3,np.nan,2,
np.nan,2,3,np.nan,7]})
df2=pd.DataFrame({'A':['Feb','Blue',np.nan,'Flow','Feb',
'Beta','Cat','Feb','Beta','Air'],
'B':[np.nan,np.nan,'value','s','t','s','t','t','t','t'],
'C':[np.nan,np.nan,3,2,1,7,6,5,4,3]}
)
df3=df1.drop_duplicates(subset=['A'])
dd=df3.set_index('A')['B'].to_dict()
df2
A B C
0 Feb NaN NaN
1 Blue NaN NaN
2 NaN value 3.0
3 Flow s 2.0
4 Feb t 1.0
5 Beta s 7.0
6 Cat t 6.0
7 Feb t 5.0
8 Beta t 4.0
9 Air t 3.0
如果df ['B']中的数据为NaN,我想用dd填充df2 ['B']。
如果我使用
df2['B']= df2['A'].map(dd)
然后用dd填充df2 ['B']中的所有数据。
A B C
0 Feb s NaN
1 Blue NaN NaN
2 NaN s 3.0
3 Flow s 2.0
4 Feb s 1.0
5 Beta s 7.0
6 Cat t 6.0
7 Feb s 5.0
8 Beta s 4.0
9 Air t 3.0
我想得到的是
A B C
0 Feb s NaN
1 Blue NaN NaN
2 NaN value 3.0
3 Flow s 2.0
4 Feb s 1.0
5 Beta s 7.0
6 Cat t 6.0
7 Feb s 5.0
8 Beta s 4.0
9 Air t 3.0