Pandas dataframe, как назначить значение столбцу на основе определенной группы и предыдущего значения строки - PullRequest
0 голосов
/ 26 апреля 2019

у меня есть датафрейм

plane   Time    Time_difference
  1      180    0
  1      195    15
  1     3000    2805
  1     3100    100
  2     2323    0
  2     2665    342

Я хочу добавить столбец "trip", где, если Time_difference больше чем 500, начинается новая поездка, счетчик поездок увеличивается на 1 и (если Time_difference меньше 500, номер поездки должен быть таким же. Счетчик поездок должен начинаться с 1 снова для разных самолетов

plane   Time  Time_difference  trip
  1      180     0             1
  1      195    15             1
  1     3000    2805           2
  1     3100    100            2
  2     2323    0              1     
  2     2665    342            1

Я пробовал следующее, но путешествие не начинается с 1 для разных самолетов.

 def rollin(diff):
    if diff >= threshold:
       rollin.count += 1

    else:
      rollin.count 

    return rollin.count

 rollin.count = 0

 df2["trip"] = df2["Time_difference"].apply(rollin)

1 Ответ

0 голосов
/ 26 апреля 2019

Сначала создайте столбец 'trip':

df['trip'] = 0

Затем установите в первой строке каждой группы плоскостей значение 1.

df.loc[df.groupby('plane').head(1).index,'trip'] = 1

Затем установите любую разницу времени> 500 для столбца 'trip' в 1

.
df.loc[df['Time_difference']>500, 'trip'] =1

Затем сгруппированы по группам 'плоскости'

df['trip'] = df.groupby('plane')['trip'].cumsum()

print(df)

  plane  Time  Time_difference  trip
0      1   180                0     1
1      1   195               15     1
2      1  3000             2805     2
3      1  3100              100     2
4      2  2323                0     1
5      2  2665              342     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...