如何合并 pandas 中的重复行,填充缺失值?
在下面的示例中,某些行在 c1
列中缺少值,但 c2
列中存在重复项,可以用作索引来查找和填充在那些缺失的值中。
输入数据如下所示:
c1 c2
id
0 10.0 a
1 NaN b
2 30.0 c
3 10.0 a
4 20.0 b
5 NaN c
期望的输出:
c1 c2
0 10 a
1 20 b
2 30 c
但是如何做到这一点呢?
以下是生成示例数据的代码:
import pandas as pd
df = pd.DataFrame({
'c1': [10, float('nan'), 30, 10, 20, float('nan')]
'c2': [100, 200, 300, 100, 200, 300],
})
最佳答案
我认为需要sort_values
与 drop_duplicates
:
df = df.sort_values(['c1','c2']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
4 20.0 200
2 30.0 300
或者首先通过 dropna
删除带有 NaN
的行:
df = df.dropna(subset=['c1']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200
df = df.dropna(subset=['c1']).drop_duplicates(['c1','c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200
关于pandas - 如何合并 pandas 中的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51302813/