python - 使用不以冒号分隔的小时和分钟计算小时平均值
问题描述
我正在使用熊猫数据框。我的数据中有一列以这种格式显示小时数:
Hour ALTM PALT TMPC DWPC RELH \
0 0 1012.868116 1012.368116 23.556731 19.368497 79.346506
1 30 1013.142857 1012.642857 23.000000 17.428571 73.714286
2 35 1012.000000 1011.500000 23.000000 22.000000 94.000000
3 100 1012.685307 1012.185307 23.251641 19.069231 79.638462
4 130 1013.333333 1012.833333 24.833333 19.000000 73.166667
5 200 1012.265487 1011.765487 23.104930 19.143939 80.640506
6 201 1012.000000 1011.500000 23.000000 21.000000 89.000000
.
.
.
68 2330 1013.666667 1013.166667 25.333333 17.500000 63.666667
前两个数字是小时,后两个数字是分钟(小时只是一个数字的情况除外)。我正在尝试按小时计算所有这些变量。
当我使用此命令将 Hour 列转换为 datetime 时:
hour_goss_mean['Hour'] = pd.to_datetime(hour_goss_mean['Hour']).dt.strftime('%H%m')
然后做
hour_goss_mean['Hour']
我明白了
0 0001
1 0001
2 0001
3 0001
4 0001
5 0001
6 0001
其中第二列是新的 Hour 列。我不确定这是否是因为小时和分钟在数据中没有用冒号分隔。我不明白如何获得每小时的平均值。
解决方案
IIUC,首先您需要提取小时数和分组:
hours = df['Hour'].astype(int) // 100
df.drop('Hour', axis=1).groupby(hours).mean()
输出:
ALTM PALT TMPC DWPC RELH
Hour
0 1012.670324 1012.170324 23.185577 19.599023 82.353597
1 1013.009320 1012.509320 24.042487 19.034616 76.402565
2 1012.132743 1011.632743 23.052465 20.071970 84.820253
23 1013.666667 1013.166667 25.333333 17.500000 63.666667
推荐阅读
- python - `conda install` 报告找不到`conda search` 找到的包?
- apache-spark - 如何添加第三方库以在本地机器上运行火花
- bash - bash cd 覆盆子上的参数过多错误
- r - 对列中具有特定名称的多个列求和
- ruby-on-rails - 发送消息 en hook 成功 - Delayed_job
- python-3.x - 我是编码新手,我的井字游戏出现错误
- javascript - JanusGraph 0.4.0 通过 WebSocket 连接时抛出错误
- arrays - 如何遍历结构数组并显示所有键值
- javascript - JavaScript String.split(): 分割为 ; 前面没有反斜杠?
- java - 如何修复 adb:错误:无法绑定侦听器:不允许操作 react-native?