繁体   English   中英

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

[英]Pandas Groupby - select row with highest value in one column if multiple rows exceed value in another

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

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

相反,对于每个组中ColumnC > 100所有行,我想采用ColumnD具有最高值的ColumnD

我怎样才能做到这一点?

编辑:

@Code Different在下面的注释基本上是我要查找的内容,但是我不想排除没有任何行的ColumnC > 100 ,在这种情况下,我希望在ColumnC具有最高值的ColumnC ,如上面的例子。

通常,我们将数据分为两部分,然后在条件满足后进行过滤

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM