[英]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.