2024-09-24 02:26:06 发布
网友
我有一个有3列的数据帧:x,y,time。有几千排。在
我要做的是检索具有最小时间的行,但我希望最小时间不应为0。在
例如
x y time 240 1 28.5 240 2 19.3 240 240 0 240 19 9.7
到目前为止,我尝试了以下方法:
我也尝试过groupby
df.loc[df.groupby('id_x', sort=False)['time'].idxmin()]
我知道在这部片子里我遇到了一些问题,因为我通常都是连续剧。在
你根本不需要groupby。这里有一个选项mask/where+loc+idxmin
groupby
mask
where
loc
idxmin
df.loc[[df.time.mask(df.time.eq(0)).idxmin()]]
或者
x y time 3 240 19 9.7
试试这个:
In [69]: df.loc[df.time>0, 'time'].idxmin() Out[69]: 3
您可以按^{}筛选出0值,并通过^{}获得最小值的索引,最后按loc选择:
0
s = df.loc[df.query('time != 0')['time'].idxmin()] print (s) x 240.0 y 19.0 time 9.7 Name: 3, dtype: float64 df = df.loc[[df.query('time != 0')['time'].idxmin()]] print (df) x y time 3 240 19 9.7
你根本不需要
groupby
。这里有一个选项mask
/where
+loc
+idxmin
或者
^{pr2}$试试这个:
或者
^{pr2}$您可以按^{} 筛选出} 获得最小值的索引,最后按
0
值,并通过^{loc
选择:相关问题 更多 >
编程相关推荐