Выявление остановок из телеметрических данных с использованием Pandas - PullRequest
1 голос
/ 20 марта 2019

У меня есть телеметрия (широта, долгота, время, пробег) от большого количества транспортных средств.Каждый фрейм данных панд имеет время движения одного транспортного средства, и я хотел бы определить, когда транспортное средство останавливается.

Я использовал группу панд для определения того, движется ли транспортное средство между рядами (учитывая некоторый дрейф).

df['Stopped'] = (df.groupby('DAY')['LAT'].diff() <= 0.0001) & (df.groupby('DAY')['LNG'].diff() <= 0.0001) Тем не менее, это не точное обозначение остановок.Вот кое-что, где транспортное средство явно движется (извините, это в HTML-коде - иначе я не знаю, как заставить его отформатировать его в виде таблицы).

       Stopped      LAT       LNG         DAY
401218     True  22.6874  113.9487  2018-10-15
401219     True  22.6874  113.9487  2018-10-15
401220     True  22.6874  113.9487  2018-10-15
401221     True  22.6873  113.9487  2018-10-15
401222     True  22.6869  113.9483  2018-10-15
401223     True  22.6863  113.9479  2018-10-15
401224     True  22.6859  113.9476  2018-10-15
401225     True  22.6854  113.9471  2018-10-15
401226     True  22.6849  113.9468  2018-10-15
401227     True  22.6844  113.9463  2018-10-15
401228     True  22.6841  113.9457  2018-10-15
401229     True  22.6839  113.9449  2018-10-15
401230     True  22.6838  113.9438  2018-10-15
401231     True  22.6837  113.9428  2018-10-15
401232     True  22.6837  113.9417  2018-10-15
401233     True  22.6836  113.9409  2018-10-15
401234     True  22.6835  113.9400  2018-10-15
401235     True  22.6833  113.9392  2018-10-15
401236     True  22.6832  113.9387  2018-10-15
401237     True  22.6832  113.9384  2018-10-15

1 Ответ

0 голосов
/ 20 марта 2019

Посмотрите на вывод df.groupby('DAY')['LAT'].diff().Многие значения являются отрицательными, поэтому вам необходимо принять абсолютное значение, прежде чем проверять, не меньше ли оно вашего предельного значения:

df['Stopped2'] = (df.groupby('DAY')['LAT'].diff().abs() <= 0.0001) & (df.groupby('DAY')['LNG'].diff().abs() <= 0.0001)
print(df)
        Stopped      LAT       LNG       DAY  Stopped2
401218     True  22.6874  113.9487  10/15/18     False
401219     True  22.6874  113.9487  10/15/18      True
401220     True  22.6874  113.9487  10/15/18      True
401221     True  22.6873  113.9487  10/15/18      True
401222     True  22.6869  113.9483  10/15/18     False
401223     True  22.6863  113.9479  10/15/18     False
401224     True  22.6859  113.9476  10/15/18     False
401225     True  22.6854  113.9471  10/15/18     False
401226     True  22.6849  113.9468  10/15/18     False
401227     True  22.6844  113.9463  10/15/18     False
401228     True  22.6841  113.9457  10/15/18     False
401229     True  22.6839  113.9449  10/15/18     False
401230     True  22.6838  113.9438  10/15/18     False
401231     True  22.6837  113.9428  10/15/18     False
401232     True  22.6837  113.9417  10/15/18     False
401233     True  22.6836  113.9409  10/15/18     False
401234     True  22.6835  113.9400  10/15/18     False
401235     True  22.6833  113.9392  10/15/18     False
401236     True  22.6832  113.9387  10/15/18     False
401237     True  22.6832  113.9384  10/15/18     False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...