簡體   English   中英

Select Pandas dataframe 行,其中兩列或多列一起具有最大值

[英]Select Pandas dataframe row where two or more columns have their maximum value together

假設你有一個pandas.DataFrame像這樣:

機構 專長1 壯舉2 壯舉3 ...
ID1 14.5 0 0.32 ...
ID2 322.12 1 0.94 ...
ID3 27.08 0 1.47 ...

我的問題很簡單:如何根據兩列或多列的最大組合值從 dataframe 中獲得一個 select 行。 例如:

  • 我想 select 列Feat1Feat3一起具有最大值的行,返回:
機構 專長1 壯舉2 壯舉3 ...
ID2 322.12 1 0.94 ...

我確信一個好的舊 for 循環可以解決這個問題,但我相信必須有一個 Pandas function ,希望有人指出我正確的方向。

你可以玩arround:

df.sum(axis=1)

df['row_sum'] = df.sum(axis=1)

或者

df['sum'] = df['col1' ] + df['col3']

接着:

df.sort(['sum' ],ascending=[False or True])

df.sort_index()

你可以用切片來做到這一點:

output = df.loc[(df['Feat1'] + df['Feat3']).to_frame().idxmax(),:]

這輸出:

  Institution   Feat1  Feat2  Feat3
1         ID2  322.12      1   0.94

或者,您始終可以創建一個列並對其進行切片,但這需要一些額外的努力。

df['filter'] = df['Feat1'] + df['Feat3']
output = df[df['filter'] == df['filter'].max()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM