如何使用具有公共列值的其他行中的值替换 nan 值
how to replace nan value using the value of which from other rows with common column value
使用 B 列作为参考如何替换 NaN 值
>>> a
A B
1 1
Nan 3
1 1
Nan 1
Nan 2
5 3
1 1
2 2
我想要这样的结果。
>> result
A B
1 1
5 3
1 1
1 1
2 2
5 3
1 1
2 2
我尝试在列 b
上进行合并,但无法弄清楚
b=a.groupby('B').reset_index()
dfM = pd.merge(a,b,on='B', how ='left')
我们需要从 B
列中的值到 A
中的值的映射。
mapping = a.dropna().drop_duplicates().set_index("B")["A"]
看起来像这样
B
1 1.0
3 5.0
2 2.0
Name: A, dtype: float64
此时填充空值变得无关紧要了。我们可以只映射 B
以获得列 A
a["B"].map(mapping)
这给你
0 1.0
1 5.0
2 1.0
3 1.0
4 2.0
5 5.0
6 1.0
7 2.0
Name: B, dtype: float64
转换为 int 并在需要时使用它覆盖原始数据框中的列 A
。
使用 B 列作为参考如何替换 NaN 值
>>> a
A B
1 1
Nan 3
1 1
Nan 1
Nan 2
5 3
1 1
2 2
我想要这样的结果。
>> result
A B
1 1
5 3
1 1
1 1
2 2
5 3
1 1
2 2
我尝试在列 b
上进行合并,但无法弄清楚
b=a.groupby('B').reset_index()
dfM = pd.merge(a,b,on='B', how ='left')
我们需要从 B
列中的值到 A
中的值的映射。
mapping = a.dropna().drop_duplicates().set_index("B")["A"]
看起来像这样
B
1 1.0
3 5.0
2 2.0
Name: A, dtype: float64
此时填充空值变得无关紧要了。我们可以只映射 B
以获得列 A
a["B"].map(mapping)
这给你
0 1.0
1 5.0
2 1.0
3 1.0
4 2.0
5 5.0
6 1.0
7 2.0
Name: B, dtype: float64
转换为 int 并在需要时使用它覆盖原始数据框中的列 A
。