我有一个包含一些时间戳的数据帧,我需要为每个ID计算每个时间戳之间的差异。我的数据帧如下所示:
ID Value Date Date_diff_cumsum visVal Weight TempVal
1 0.000 2017-02-13 20:54:00 0.0 0.000 75.0 NaN
1 29.598 2017-02-13 21:02:00 8.0 29.598 75.0 4.933000
1 273.000 2017-02-13 22:33:00 99.0 273.000 75.0 3.676768
1 153.000 2017-02-13 23:24:00 150.0 153.000 75.0 1.360000
1 136.902 2017-02-14 00:01:00 187.0 136.902 75.0 0.976128
现在,我需要计算Date\u diff\u cumsum作为每个时间戳之间的差,而不是第一个时间戳。我的代码如下:
df = df.sort_values(by=['Date'])
df['Date_diff_cumsum'] = df.groupby('ID').Date.diff().dt.seconds / 60.0
df['Date_diff_cumsum'] = df.groupby('ID').Date_diff_cumsum.cumsum().fillna(0)
df['Value'] = df['Value'].apply(lambda x: x*1000)
df['visVal'] = df.groupby('ID')['Value'].transform(lambda x:(x-x.iloc[0]*100))
df['Weight'] = df['ID'].map(dfWeight.set_index('ID')['Value']).fillna(0)
df['TempVal'] = (df['Value']/(df['Weight'] * df['Date_diff_cumsum'])*100).fillna(0)
如何修改lambda func来计算时间戳和前一个时间戳之间的日期差?你知道吗
另外,在函数的末尾,我对其他数据帧重复相同的操作,需要对每个数据帧和每个时间戳的所有TempVal求和这是代码:
frame = [df, df1, df2]
final = pd.concat(frame)
final['FinalVal'] = final.groupby('ID')['TempVal'].cumsum()
最后一部分对于每个df中相同时间戳的每个TempVal的总和是否正确? 非常感谢
编辑:预期输出:
ID Value Date Date_diff_cumsum visVal Weight TempVal
1 0.000 2017-02-13 20:54:00 0.0 0.000 75.0 0.0
1 29.598 2017-02-13 21:02:00 8.0 29.598 75.0 4.31
1 273.000 2017-02-13 22:33:00 91.0 273.000 75.0 4
1 153.000 2017-02-13 23:24:00 59.0 153.000 75.0 3.45
1 136.902 2017-02-14 00:01:00 37.0 136.902 75.0 4.9
在我的最后,因为我什么都没有,因为我被困住了: 从df,df1,df2,每个时间戳的所有TempVal之和,类似于
ID TempVal1 Date TempVal2 TempVal3 FinalVal
1 0.000 2017-02-13 20:54:00 0.0 0.000 0.0
1 4.31 2017-02-13 21:02:00 8.0 NaN 12.31
1 4 2017-02-13 22:33:00 91.0 273.000 368
1 3.45 2017-02-13 23:24:00 NaN 153.000 156.45
1 4.9 2017-02-14 00:01:00 37.0 NaN 41.9
其中,如果在一个数据帧中没有时间戳的度量,那么在最后一个数据帧中,它被认为是NaN或0
我只使用了“Diff”列我使用的数据只是Value&Date
Value Date 0.000 2017-02-1320:54:00 29.598 2017-02-1321:02:00 273.000 2017-02-1322:33:00 153.000 2017-02-1323:24:00 136.902 2017-02-1400:01:00
;结果如下。检查这是否有用
相关问题 更多 >
编程相关推荐