我是python和pandas库的新手,我需要帮助来解决这个问题。
我的数据框看起来像这样:
timestamp battery_level
0 2017-10-09 15:33:09 0.37
1 2017-10-09 15:36:17 0.38
2 2017-10-09 15:36:27 0.37
3 2017-10-09 15:38:08 0.38
4 2017-10-09 15:42:39 0.39
5 2017-10-09 15:45:30 0.40
6 2017-10-09 15:48:41 0.41
7 2017-10-09 15:51:52 0.42
8 2017-10-09 15:54:53 0.43
9 2017-10-09 15:57:54 0.44
10 2017-10-09 16:00:55 0.45
11 2017-10-09 16:05:47 0.46
12 2017-10-09 16:08:58 0.47
13 2017-10-09 16:12:09 0.48
14 2017-10-09 16:15:20 0.49
15 2017-10-09 16:18:11 0.50
如何计算每小时的时间戳差异和电池电量?
在这种情况下,我想得到这样的东西:
timestamp_diff battery_diff
15:00:00 00:24:45 0.07
16:00:00 00:17:26 0.05
答案 0 :(得分:4)
使用groupby
或hour
的floor
作为diff
和sum
的日期时间,重命名是为了避免在reset_index
之后使用相同的列名称:
#if necessary convert to datetimes
df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.groupby(df['timestamp'].dt.hour.rename('date')).apply(lambda x: x.diff().sum())
print (df)
timestamp battery_level
date
15 00:24:45 0.07
16 00:17:26 0.05
df = df.groupby(df['timestamp'].dt.floor('H').rename('date')).apply(lambda x: x.diff().sum())
print (df)
timestamp battery_level
date
2017-10-09 15:00:00 00:24:45 0.07
2017-10-09 16:00:00 00:17:26 0.05
df = df.reset_index()
print (df)
date timestamp battery_level
0 2017-10-09 15:00:00 00:24:45 0.07
1 2017-10-09 16:00:00 00:17:26 0.05