df
X Y
0 Company 1 Parent 1
1 NaN Parent 2
2 NaN Parent 3
3 Company 2 Parent 2
4 Company 3 Parent 3
5 NaN Parent 1
首先,您可以创建Y到X的映射。因此,您可以从表中删除NaN并将其转换为字典
temp = df.dropna(axis=0, how='any')
temp
X Y
0 Company 1 Parent 1
3 Company 2 Parent 2
4 Company 3 Parent 3
map1 = pd.Series(temp['X'].values, index=temp['Y']).to_dict()
map1
{'Parent 1': 'Company 1', 'Parent 2': 'Company 2', 'Parent 3': 'Company 3'}
然后,您可以使用Y的映射fillna。它只会影响其为NaN的值
df['X'] = df['X'].fillna(df['Y'].map(map1))
df
X Y
0 Company 1 Parent 1
1 Company 2 Parent 2
2 Company 3 Parent 3
3 Company 2 Parent 2
4 Company 3 Parent 3
5 Company 1 Parent 1
#Specify which entries in the Name column are NaN
missing_name = df.X.isnull()
#Set index of new dataframe to Borrower
df_name = df_X.set_index('Y')
#impute the Name from the new dataframe at the null positions in the old dataframe
df.loc[miss_name, 'X'] = df.loc[miss_name, 'Y'].apply(lambda x: df_name.X[x])
首先,您可以创建
Y
到X
的映射。因此,您可以从表中删除NaN
并将其转换为字典然后,您可以使用
Y
的映射fillna
。它只会影响其为NaN的值作为参考,我使用lambda设法找到了这个问题的解决方案
您可以将
transform
与first
一起使用:输出:
相关问题 更多 >
编程相关推荐