Pandas Groupby-如果多行超过另一行的值,则选择一列中值最高的行

时间:2019-09-06 23:40:17

标签: python pandas

此操作将我的DataFrame按两列进行分组,然后返回ColumnC中具有最高值的行:

df2 = df.loc[df.groupby(['columnA', 'columnB'], sort=False)['columnC'].idxmax()]

相反,对于每个组中ColumnC > 100处的所有行,我想选择ColumnD中具有最高值的行。

我该怎么做?

修改:

以下@Code的注释基本上是我要寻找的内容,但是我不想排除没有行具有ColumnC > 100的组,在这种情况下,我希望具有最高值的行如上例所示,在ColumnC中。

1 个答案:

答案 0 :(得分:0)

通常,我们将数据分成两部分,然后在条件之后过滤它们

df=sort_values('columnD')

df1 = df[df['columnC'] > 100]].drop_duplicates(['columnA', 'columnB'],keep='last')
df2 = df.drop_duplicates(['columnA', 'columnB'],keep='last')

Yourdf=pd.concat([df1,df2]).drop_duplicates(['columnA', 'columnB'])