如何选择满足另一列条件的具有最小值的所有行

2024-05-13 10:46:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从我的数据集中选择所有具有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()]]

如何获取所有行


Tags: 数据实例代码namedfsamlocpoints
3条回答

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())]

政府;如果要使用或可以使用|,则表示布尔索引中的和

您可以使用min函数从点==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

相关问题 更多 >