Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用时间戳之间的差异生成列_Python_Dataframe - Fatal编程技术网

Python 如何使用时间戳之间的差异生成列

Python 如何使用时间戳之间的差异生成列,python,dataframe,Python,Dataframe,我有以下数据帧: df_Valve = pd.DataFrame({'TimeStamp':['2018-01-01 00:00:00', '2018-01-01 00:00:05', '2018-01-01 00:00:07', '2018-01-02 00:00:07', '2018-01-02 00:00:08']

我有以下数据帧:

    df_Valve = pd.DataFrame({'TimeStamp':['2018-01-01 00:00:00', '2018-01-01 00:00:05',
                                          '2018-01-01 00:00:07', '2018-01-02 00:00:07', 
                                          '2018-01-02 00:00:08'], 
                             'Sensor_Temp': [53, 66, 69, 69, 69],
                             'Sensor_StrainGauge': [0, 0, 0, 1, 1]})

    df_Valve


           TimeStamp           Sensor_Temp    Sensor_StrainGauge 
    2018-01-01 00:00:00           53                0
    2018-01-01 00:00:05           66                0
    2018-01-01 00:00:07           69                0
    2018-01-02 00:00:07           69                1
    2018-01-02 00:00:08           69                1
我需要在dataframe中添加一个新列。此新列应包含位置0的“时间戳”和位置1(第1行)的“时间戳”之间的差异。然后是位置1的“时间戳”和位置2的“时间戳”(第2行)之间的差异,依此类推

所需输出为:

          TimeStamp           Sensor_Temp    Sensor_StrainGauge      New_Columns
    2018-01-01 00:00:00       53                0                   0 days 00:00:05           
    2018-01-01 00:00:05       66                0                   0 days 00:00:02
    2018-01-01 00:00:07       69                0                   1 days 00:00:00
    2018-01-02 00:00:07       69                1                   0 days 00:00:01
    2018-01-02 00:00:08       69                1                   0 days 00:00:00   #last index
我实现了以下代码(但不正确):

我的算法输出不正确,如下所示:

         TimeStamp           Sensor_Temp    Sensor_StrainGauge      New_Columns
    2018-01-01 00:00:00       53                0              0 days            
    2018-01-01 00:00:05       66                0              0 days 
    2018-01-01 00:00:07       69                0              0 days 
    2018-01-02 00:00:07       69                1              0 days 
    2018-01-02 00:00:08       69                1              0 days 
使用 若要转换为datetime,则可以使用 为了得到你想要的差异,终于习惯了 填写最后一个值:

df_Valve['TimeStamp']=pd.to_datetime(df_Valve['TimeStamp'])
df_Valve['New_Columns']=df_Valve['TimeStamp'].diff().shift(-1).fillna(pd.Timedelta(0))
print(df_Valve)


此行:df_Valve['NewColumn']=df_Valve['TimeStamp'].diff().ffill()生成以下错误:TypeError:不支持的操作数类型-:'str'和'str'是,完美。Tks
df_Valve['TimeStamp']=pd.to_datetime(df_Valve['TimeStamp'])
df_Valve['New_Columns']=df_Valve['TimeStamp'].diff().shift(-1).fillna(pd.Timedelta(0))
print(df_Valve)
            TimeStamp  Sensor_Temp  Sensor_StrainGauge     New_Columns
0 2018-01-01 00:00:00           53                   0 0 days 00:00:05
1 2018-01-01 00:00:05           66                   0 0 days 00:00:02
2 2018-01-01 00:00:07           69                   0 1 days 00:00:00
3 2018-01-02 00:00:07           69                   1 0 days 00:00:01
4 2018-01-02 00:00:08           69                   1 0 days 00:00:00