簡體   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