首页 > 解决方案 > 在python数据框中找到对两个条件进行分层的第一行

问题描述

我有一个看起来像这样的数据框:

数据框

我想编写一个代码来定位与下一个点的距离小于 250 的点。当找到该点时,搜索第一个距离超过250且速度大于5的点。例如在样本数据集中,首先找到第7行,然后找到距离超过250且速度为10.8的第10行并返回第 10 行的索引到目前为止我已经编写了这段代码:

for i in (number+1 for number in range(data_gpd.index[-1]-1)):
if (data_gpd['distance'][i+1]< 250):

我不确定在这种情况下我应该做什么。我曾考虑使用带有条件的“Next”语句,但我只能在一个条件下找到它用于列表理解。

我非常感谢您的帮助,因为我是 python 新手,不确定哪种语法会更好

标签: pythonpandasif-statementnext

解决方案


您可以使用 pandas 函数loc和相关条件来返回 pandas DataFrame。

第一个条件:

df['distance'] < 250

第二个条件:

df['speed'] > 5

综合条件:

(df['distance'] < 250) & (df['speed'] > 5)

使用loc及组合条件:

df.loc[(df['distance'] < 250) & (df['speed'] > 5)]

输入:

   time  location  distance   speed
0   300      9071      9071  108.00
1   300     18376      9304   11.00
2   300     28006      9630  115.00
3   200     30506      2500   45.00
4   400     31606      1100    9.90
5   500     31706       100    0.72
6   150     31756        50    1.20
7    20     31766        10    1.80
8    50     31916       150   10.80

输出:

   time  location  distance  speed
8    50     31916       150   10.8

推荐阅读