我想从数据集中选择Points==0且Day列中值最小的所有行。
数据帧
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()]]
如何获取所有行?
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
您可以使用min函数从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
您可以通过以下方式完成:
df[(df['Points']==0) & (df['Day']==df[df['Points']==0]['Day'].min())]
&表示pandas布尔索引中的AND,如果要使用OR,可以使用|。