![](/img/trans.png)
[英]pandas: how to select an all rows of a dataframe that meet a condition (ValueError: “Arrays were different lengths”)
[英]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.