Как получить разницу между строками

#python #pandas

#python #панды

Вопрос:

Это мой фрейм данных:

 utc_timestamp               data
2015-10-13 11:00:00 00:00   1
2015-10-13 12:00:00 00:00   5
2015-10-13 13:00:00 00:00   6
2015-10-13 14:00:00 00:00   10
2015-10-13 15:00:00 00:00   11
 

Значения data являются кумулятивными.

Как я могу получить этот результат:

 utc_timestamp               data
2015-10-13 11:00:00 00:00   1
2015-10-13 12:00:00 00:00   4
2015-10-13 13:00:00 00:00   1
2015-10-13 14:00:00 00:00   4
2015-10-13 15:00:00 00:00   1
 

Я знаю, что это возможно использовать df["data"].diff() , но как я могу получить полный финал df с utc_timestamp помощью?

Ответ №1:

Я думаю, вам нужно fillna :

 df['data'] = df['data'].diff(1).fillna(df['data'])
 

Или используйте shift fill_value опцию with, чтобы вы не опускали свои данные до float:

 df['data'] -= df['data'].shift(fill_value=0)
 

Вывод:

                utc_timestamp  data
0  2015-10-13 11:00:00 00:00     1
1  2015-10-13 12:00:00 00:00     4
2  2015-10-13 13:00:00 00:00     1
3  2015-10-13 14:00:00 00:00     4
4  2015-10-13 15:00:00 00:00     1
 

Ответ №2:

Попробуйте назначить его обратно

 df['data'] = df['data'].diff()