如何使用数据框计算每小时的某些值

时间:2018-05-14 11:05:20

标签: python pandas

我是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

1 个答案:

答案 0 :(得分:4)

使用groupbyhourfloor作为diffsum的日期时间,重命名是为了避免在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