df1缺少值:
df1=
ID age
1` 12
2 na
3 23
4 na
5 na
6 na
我有另一个df:
df2=
ID age
2 4
4 5
5 6
6 7
我想基于相同的ID使用df2填充df1的na:
df1 (after fillna)=
ID age
1` 12
2 4
3 23
4 5
5 6
6 7
谢谢!
答案 0 :(得分:2)
您可以将ID
设置为两个数据框的索引,然后使用fillna()
方法填充缺失值,同时匹配索引:
df1.set_index("ID").age.fillna(df2.set_index("ID").age).reset_index()
# ID age
#0 1 12
#1 2 4
#2 3 23
#3 4 5
#4 5 6
#5 6 7
您可以尝试的另一个选项是combine_first
,如果不为空则从第一个数据帧获取值,否则从索引和列匹配的第二个数据帧获取值:
df1.set_index("ID").combine_first(df2.set_index("ID")).reset_index()
# ID age
#0 1 12.0
#1 2 4.0
#2 3 23.0
#3 4 5.0
#4 5 6.0
#5 6 7.0
答案 1 :(得分:0)
检查空值在何处,然后在这些位置上插入值。
miss_bool = df1.age.isnull()
df2 = df2.set_index('Id')
df1.loc[miss_bool, 'age'] = df1.loc[miss_bool, 'Id'].apply(lambda x: df2.age[x])