我有一个包含2列缺少值的框架:
name code
0 A 12
1 B 39
2 C 23
3 A 12
4 NaN 12
5 NaN 39
6 C 23
7 NaN 39
我需要按如下所示填写缺失值:
name code
0 A 12
1 B 39
2 C 23
3 A 12
4 A 12
5 B 39
6 C 23
7 B 39
答案 0 :(得分:0)
生成代码到非空名称的反向映射,然后使用该映射将缺少的值映射回去:
mapping = dict(df.dropna()[['code', 'name']].values)
# mapping = df.set_index('code')['name'].dropna().to_dict()
df['name'] = df['name'].fillna(df['code'].map(mapping))
df
name code
0 A 12
1 B 39
2 C 23
3 A 12
4 A 12
5 B 39
6 C 23
7 B 39
您也可以执行就地更新。
df['name'].update(df['code'].map(mapping))
df
name code
0 A 12
1 B 39
2 C 23
3 A 12
4 A 12
5 B 39
6 C 23
7 B 39