如何合并熊猫中的重复行?

Posted

技术标签:

【中文标题】如何合并熊猫中的重复行?【英文标题】:How to combine duplicate rows in pandas? 【发布时间】:2018-12-20 12:25:54 【问题描述】:

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],
)

【问题讨论】:

【参考方案1】:

我认为需要sort_valuesdrop_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

或者先删除NaNs by dropna的行:

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

【讨论】:

以上是关于如何合并熊猫中的重复行?的主要内容,如果未能解决你的问题,请参考以下文章

熊猫如何删除备用行[重复]

如何合并 MySQL 表中的重复行

要合并的大文件。如何防止熊猫合并中的重复?

你如何删除每组熊猫的某些行[重复]

将列值分配给熊猫数据框中的唯一行[重复]

熊猫,附加到excel中的下一个可用行[重复]