Как измерить разницу нескольких рядов временных меток в кадре данных в Pandas? - PullRequest
0 голосов
/ 23 мая 2018

Я хочу получить интервал времени между несколькими столбцами меток времени в кадре данных.Также несколько записей NaN.

Оригинал DF:

       0     1     2     3     4     5 
0    date1 date2  NaN   NaN   NaN   NaN
1    date3 date4 date5 date6 date7 date8

Желаемый вывод:

          0           1           2           3           4
0    date2-date1     NaN         NaN         NaN         NaN
1    date4-date3 date5-date4 date6-date5 date7-date6 date8-date7

1 Ответ

0 голосов
/ 23 мая 2018

Я думаю, что вы можете использовать, если последовательные NaN s до конца строк:

df = pd.DataFrame([['2015-01-02','2015-01-03', np.nan, np.nan],
                   ['2015-01-02','2015-01-05','2015-01-07','2015-01-12']])
print (df)
            0           1           2           3
0  2015-01-02  2015-01-03         NaN         NaN
1  2015-01-02  2015-01-05  2015-01-07  2015-01-12

df = df.apply(pd.to_datetime).ffill(axis=1).diff(axis=1)
print (df)
    0      1      2      3
0 NaT 1 days 0 days 0 days
1 NaT 3 days 2 days 5 days

Подробности :

Сначала преобразуйте все столбцы в datetime:

print (df.apply(pd.to_datetime))
           0          1          2          3
0 2015-01-02 2015-01-03        NaT        NaT
1 2015-01-02 2015-01-05 2015-01-07 2015-01-12

Заменить NaN s на прямое заполнение последнего значения в строках:

print (df.apply(pd.to_datetime).ffill(axis=1))
           0          1          2          3
0 2015-01-02 2015-01-03 2015-01-03 2015-01-03
1 2015-01-02 2015-01-05 2015-01-07 2015-01-12

Получить разницу на diff:

print (df.apply(pd.to_datetime).ffill(axis=1).diff(axis=1))
    0      1      2      3
0 NaT 1 days 0 days 0 days
1 NaT 3 days 2 days 5 days
...