当你在两列中都有缺失值时如何填充缺失值?字典 - 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
我有这个场景。我正在学习中。我正在清理数据集。现在我有一个问题 有很多行有这个问题
我有密钥但没有名称产品。我有名称产品但没有密钥。
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