Нужно добавить новый столбец DateTime в уже существующий фрейм данных, используя его столбцы - PullRequest
1 голос
/ 06 июня 2019

У меня есть фрейм данных, в котором у меня есть расстояние и скорость, из которых я рассчитал время. Теперь я хочу добавить столбец, в котором я могу дать фиксированное значение DateTime для первой строки, и он автоматически добавит время и перейдет к следующему значению в столбце dateTime

В настоящее время датафрейм выглядит следующим образом:

x_coordinate    y_coordinate    z_coordinate    speed   Distance    Time1
-22                -2.28           -0.1         300     1           0.2
-21                -2.28           -0.1         300     1           0.2
-20                -2.28           -0.1         300     1           0.2
-19                -2.28           -0.1         300     1           0.2
-18                -2.28           -0.1         300     1           0.2
-17                -2.28           -0.1         300     1           0.2
-16                -2.28           -0.1         300     1           0.2
-15                -2.28           -0.1         300     1           0.2
-14                -2.28           -0.1         300     1           0.2
-13.2674           -2.601          -0.1         300 0.7998398339667759  0.15996796679335518
-13.039            -3.5743         -0.1         300 0.9997396911196436  0.1999479382239287
-12.7392           -4.5281         -0.1         300 0.9998072214182092  0.19996144428364185
-12.3697           -5.4571         -0.1         300 0.9997856020167519  0.1999571204033504

Время в секундах, например, 0,2 секунды, которые Я рассчитал со скоростью 300 мм / сек и расстоянием = 1 мм. Теперь я хочу добавить столбец с именем DateTime, в котором жестко задано первое значение Dattime и последовательное значение, вычисляемое по столбцам времени, например

    Datetime
    2019-02-21 03:50:39.000 --> this is hardcoded
    2019-02-21 03:50:39.200 --> this to be calculated by adding 0.2 seconds from row 1.
     and so on

1 Ответ

1 голос
/ 06 июня 2019

Попробуйте:

df['new_time'] = (pd.to_datetime('2019-02-21 03:50:39.000') + 
                  pd.to_timedelta(df.Time1.shift().cumsum(), unit='s')
                 )

Выход (df['new_time']):

0    2019-02-21 03:50:39.000000000
1    2019-02-21 03:50:39.200000000
2    2019-02-21 03:50:39.400000000
3    2019-02-21 03:50:39.600000000
4    2019-02-21 03:50:39.800000000
5    2019-02-21 03:50:40.000000000
6    2019-02-21 03:50:40.200000000
7    2019-02-21 03:50:40.400000000
8    2019-02-21 03:50:40.600000000
9    2019-02-21 03:50:40.800000000
10   2019-02-21 03:50:40.959967967
11   2019-02-21 03:50:41.159915905
12   2019-02-21 03:50:41.359877349
Name: new_time, dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...