Python 熊猫:根据相同的ID,使用来自另一个数据帧的数据填充NA
Python 熊猫:根据相同的ID,使用来自另一个数据帧的数据填充NA,python,pandas,dataframe,Python,Pandas,Dataframe,df1缺少值: df1= 身份证年龄 1 12 2 na 3 23 4NA 5 na 6 na 我还有另一个df: df2= 身份证年龄 2 4 4 5 5 6 6 7 我想基于相同的ID,使用df2填充df1的a: df1(填充后)= 身份证年龄 1 12 2 4 3 23 4 5 5 6 6 7 您可以将ID设置为两个数据帧的索引,然后使用fillna()方法,在匹配两个数据帧的索引时填充缺少的值: df1.set_index("ID&qu
df1
缺少值:
df1=
身份证年龄
1 12
2 na
3 23
4NA
5 na
6 na
我还有另一个df
:
df2=
身份证年龄
2 4
4 5
5 6
6 7
我想基于相同的ID
,使用df2
填充df1
的a
:
df1(填充后)=
身份证年龄
1 12
2 4
3 23
4 5
5 6
6 7
您可以将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
,它从第一个数据帧获取值,如果不是null
,则从索引和列匹配的第二个数据帧获取值:
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
检查空值的位置,然后在这些位置输入值
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])