首页 > 解决方案 > 需要使用其列将新的 DateTime 列添加到已经存在的数据框

问题描述

我有一个数据框,其中有我计算时间的距离和速度。现在我想添加一个列,我可以在其中为第一行提供一个固定的 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

时间以秒为单位,例如我以 300 毫米/秒的速度和距离 = 1 毫米计算的 0.2 秒。现在我想添加一个名为 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

标签: pythonpandasdataframedatetime

解决方案


尝试:

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]

推荐阅读