【发布时间】:2018-09-03 20:03:07
【问题描述】:
我什至不确定标题是否有意义。
我有一个包含 3 列的 pandas 数据框:x、y、时间。有几千行。下面的例子:
x y time
0 225 0 20.295270
1 225 1 21.134015
2 225 2 21.382298
3 225 3 20.704367
4 225 4 20.152735
5 225 5 19.213522
.......
900 437 900 27.748966
901 437 901 20.898460
902 437 902 23.347935
903 437 903 22.011992
904 437 904 21.231041
905 437 905 28.769945
906 437 906 21.662975
.... and so on
我想要做的是检索那些与 x 和 y 关联的时间最短的行。基本上对于 y 上的每个元素,我想找到具有最小时间值的,但我想排除那些时间为 0.0 的元素。当 x 与 y 具有相同的值时,就会发生这种情况。
因此,例如,到达 y-0 的最快方法是从 x-225 开始,依此类推,因此可能会出现 x 重复自身但针对不同 y 的情况。
e.g.
x y time
225 0 20.295270
438 1 19.648954
27 20 4.342732
9 438 17.884423
225 907 24.560400
到目前为止,我一直在尝试 groupby,但得到的 x 与 y 相同。
print(df.groupby('id_y', sort=False)['time'].idxmin())
y
0 0
1 1
2 2
3 3
4 4
下面的只是返回我已经拥有的df。
df.loc[df.groupby("id_y")["time"].idxmin()]
只是指出一件事,我愿意接受选择,而不仅仅是 groupby,如果还有其他非常好的方法。
【问题讨论】:
-
我认为需要按
x列分组,而不是y,对吧? -
不,我需要 y,而不是 x。我已经解决了x。我想为 y 列中的每个元素检索基于 x 的最小时间。
标签: python pandas min pandas-groupby