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