Панды: рассчитать время между столбцами, когда условие выполняется - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы рассчитать количество дней с момента последнего разбоя.В моей таблице есть столбец Дата (День) в формате даты и времени и столбец Количество разбивок .

print (df)
          Day  Number of breakdowns
0  2017-01-09                   1.0
1  2017-01-12                   0.0
2  2017-01-13                   0.0
3  2017-01-14                   0.0
4  2017-01-16                   3.0
5  2017-01-17                   0.0
6  2017-01-18                   0.0
7  2017-01-19                   1.0
8  2017-01-20                   0.0
9  2017-01-21                   0.0
10 2017-01-23                   1.0

Table I want

1 Ответ

0 голосов
/ 12 февраля 2019

Сначала сравните Number of breakdowns с неравным по ne с совокупной суммой по cumsum для преобразования first значение на группу, поэтомуможно вычесть и преобразовать timedeltas в days:

df['Day'] = pd.to_datetime(df['Day'])

s = df.groupby(df['Number of breakdowns'].ne(0).cumsum())['Day'].transform('first')
df['New'] = (df['Day'] - s).dt.days
print (df)
          Day  Number of breakdowns  New
0  2017-01-09                   1.0    0
1  2017-01-12                   0.0    3
2  2017-01-13                   0.0    4
3  2017-01-14                   0.0    5
4  2017-01-16                   3.0    0
5  2017-01-17                   0.0    1
6  2017-01-18                   0.0    2
7  2017-01-19                   1.0    0
8  2017-01-20                   0.0    1
9  2017-01-21                   0.0    2
10 2017-01-23                   1.0    0
...