簡體   English   中英

我如何 select 滿足另一列 pandas 條件的最小值的所有行

[英]How do I select all rows with a minimum value that meet a condition in another column pandas

我想 select 所有具有 Points==0 並且在我的數據集中的 Day 列中具有最小值的行。

Dataframe

Points  Day  Name
55       0   Jon
0        7   Ron
0        8   Sam
44       6   Chris
0        7   Joan
49       2   Greg

我希望得到什么

Points  Day  Name
0        7   Ron
0        7   Joan

我已經厭倦了這段代碼,但我只得到了第一個這樣的例子。

df1 = df.loc[[df.loc[df.points == 0, 'Day'].idxmin()]]

如何獲取所有行?

您可以使用 min function 從 Points == 0 的過濾數據集中獲取最小值,然后使用它來過濾整個數據集。

df[(df["Points"] == 0) & (df["Day"] == min(df[df["Points"] == 0]["Day"]))]

現在它起作用了:

>>> df
   Points  Day
0      55    0
1       0    7
2       0    8
3      44    6
4       0    7
5      49    2

>>> df[(df["Points"] == 0) & (df["Day"] == min(df[df["Points"] == 0]["Day"]))]
   Points  Day
1       0    7
4       0    7

IIUC

df.query('Points==0').loc[lambda x : x['Day']==x['Day'].min()]
Out[207]: 
   Points  Day  Name
1       0    7   Ron
4       0    7  Joan

您可以通過以下方式進行操作:

df[(df['Points']==0) & (df['Day']==df[df['Points']==0]['Day'].min())]

& 表示 pandas boolean 索引中的 AND,如果要使用 OR,可以使用 |。

暫無
暫無

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

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