删除具有多个条件的pandas中的重复行

时间:2018-04-06 00:04:55

标签: python pandas numpy

我有

ID  Field1  Field2  Field3  Field4
1    A          1     6       F
2    A          0     1       F
3    B          2     4       F
4    B          3     8       F

我想要

ID  Field1  Field2  Field3  Field4
1    A          1     1       F
4    B          3     4       F

我希望每个不同的'Field1'有1行。 由于'Field2'和'Field3',所以有超过100个字段和行重复(所有其他字段与Field4相同)。

在我最后的df中,我希望返回'Field2'的最大值和'Field3'的最小值。

1 个答案:

答案 0 :(得分:3)

agg上下文

中使用groupby
df.groupby('Field1', as_index=False).agg(
    {'Field2': 'max', 'Field3': 'min'}
)

  Field1  Field2  Field3
0      A       1       1
1      B       3       4

请注意,您不能神奇地包含'ID''Field4',因为它可能来自群组中的任何行。您还需要另一个聚合函数,以便您也可以选择这些字段。

我会'first'使用'ID''last'使用'Field4'进行演示。

df.groupby('Field1', as_index=False).agg(
    {'ID': 'first', 'Field2': 'max', 'Field3': 'min', 'Field4': 'last'}
).reindex(columns=df.columns)

   ID Field1  Field2  Field3 Field4
0   1      A       1       1      F
1   3      B       3       4      F