python - 如何使用数据框计算每小时的某些值
问题描述
我是 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
解决方案
使用groupby
by hour
s 或floor
用于带有diff
and的日期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
推荐阅读
- jquery - 下载文件时“构造‘Blob’失败:提供的值无法转换为序列”
- javascript - 将 evt 侦听器附加到动态创建的类
- rust - 在采用 &self 或 &mut self 的函数中进行模式匹配时,如何避免 ref 关键字?
- python-3.x - 如何在 Amazon Linux 上安装 Ansible 以在 Python3 下运行?
- javascript - JQuery在迭代长度后隐藏相同数据类型的可见元素
- android - Galaxy S10、S10+ 全屏模式
- python - 拖动时Tkinter + pygame闪烁窗口
- javascript - 有没有办法禁用双点触控缩放?
- python - 使用另一个列表中的索引从列表中提取值
- c# - Caliburn Micro MVVM INotifyPropertyChange