比较pandas DataFrame中的两列,并为其中之一填充缺失值

时间:2019-05-26 03:36:15

标签: python pandas dataframe

我有一个包含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

1 个答案:

答案 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