概述
我有一个包含3列的数据框:x,y,时间.有几千行.
我想做的是检索具有最少时间的行,但我希望最小值不应该为0.
例如
x y time
240 1 28.5
240 2 19.3
240 240 0
240 19 9.7
到目前为止,我已经尝试过以下操作:
df.loc[df['time'] > 0].min()
# this gives me a series and I want a row
# x 225.000000
# y 0.000000
# time 1.066606
df['time'].drop_duplicates().nsmallest(1)
# 225 0.0
我也尝试过groupby
df.loc[df.groupby('id_x', sort=False)['time'].idxmin()]
我通常会遇到一系列问题,因此很难解决这个问题.
解决方法:
您可以通过query过滤掉0个值,并通过idxmin过滤出最小值的索引,最后通过loc选择:
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
标签:python,pandas
来源: https://codeday.me/bug/20191011/1893807.html
最后
以上就是淡淡水池为你收集整理的python3小于5大于2的值_python-Pandas Dataframe-基于两列但大于0的行找到最小值的全部内容,希望文章能够帮你解决python3小于5大于2的值_python-Pandas Dataframe-基于两列但大于0的行找到最小值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复