当你在两列中都有缺失值时如何填充缺失值?字典 - map() 方法

How to fill missing values when you have it in both columns? dictionary - map( ) method

我有这个场景。我正在学习中。我正在清理数据集。现在我有一个问题 有很多行有这个问题

我有密钥但没有名称产品。我有名称产品但没有密钥。

prod_key    product
0   21.0    NaN
1   21.0    NaN
2   0.0 metal
3   35.0    NaN
4   22.0    NaN
5   0.0 wood

我知道金属键是24木键是25 属于key 21的产品名称是plastic并且属于key 22的产品名称是paper

有数百行具有相同的情况。所以,给他们每个人重命名会花费我很多时间。

我创建了一个字典,然后使用了 .map() 方法,但我仍然无法“合并”,或者您可以说“混合”两列中的缺失值而不删除其他列值。

谢谢

您可以创建一个额外的数据框并合并两次

lst = [
    ['metal',   24],
    ['wood',    25],
    ['plastic', 21],
    ['paper',   22]
]

df2 = pd.DataFrame(lst, columns=['name', 'key'])


df1['product'].update(df1.merge(df2, left_on='prod_key', right_on='key', how='left')['name'])

df1['prod_key'].update(df1.merge(df2, left_on='product', right_on='name', how='left')['key'])
print(df2)

      name  key
0    metal   24
1     wood   25
2  plastic   21
3    paper   22


print(df1)

   prod_key  product
0      21.0  plastic
1      21.0  plastic
2      24.0    metal
3      35.0      NaN
4      22.0    paper
5      25.0     wood