python - 将 Pandas 数据框总结为半小时
问题描述
我有一个看起来像issue
下面的数据框的熊猫数据框:
import pandas as pd
import datetime
Y = 2017
M = 9
dats = (datetime.datetime(Y, M, M, 15, 30), datetime.datetime(Y, M, M, 16),
datetime.datetime(Y, M, M, 16, 30), datetime.datetime(Y, M, M, 17),
datetime.datetime(Y, M, M, 17, 4), datetime.datetime(Y, M, M, 17, 30),
datetime.datetime(Y, M, M, 18), datetime.datetime(Y, M, M, 18, 30))
issue = {'datetime': dats,
'5.0':(2.05, 2.04, 2.04 ,1, float('NaN'), 2.05, 2.04, 5),
'6.0':(5.8, 5.9, 5.2, float('NaN'), 6, 6.01, 5, 5.02)}
issue = pd.DataFrame.from_dict(issue)
我想将此数据框中的数据总结为仅包含半小时的点,并对半小时内发生的任何值(不包括nan
值)取平均值。所以最终目标是拥有一个看起来像resolution
下面创建的数据框的数据框:
import pandas as pd
import datetime
Y = 2017
M = 9
dats2 = (datetime.datetime(Y, M, M, 15, 30), datetime.datetime(Y, M, M, 16),
datetime.datetime(Y, M, M, 16, 30), datetime.datetime(Y, M, M, 17),
datetime.datetime(Y, M, M, 17, 30), datetime.datetime(Y, M, M, 18),
datetime.datetime(Y, M, M, 18, 30))
resolution = {'datetime': dats2,
'5.0':(2.05, 2.04, 2.04 ,1, 2.05, 2.04, 5),
'6.0':(5.8, 5.9, 5.2, 6, 6.01, 5, 5.02)}
resolution = pd.DataFrame.from_dict(resolution)
我很容易在 R 中使用dplyr
. 在此先感谢您对此事的任何和所有帮助!
解决方案
甚至比 R 中的还要短
issue.set_index('datetime').resample('30 min').mean()
Out[685]:
5.0 6.0
datetime
2017-09-09 15:30:00 2.05 5.80
2017-09-09 16:00:00 2.04 5.90
2017-09-09 16:30:00 2.04 5.20
2017-09-09 17:00:00 1.00 6.00
2017-09-09 17:30:00 2.05 6.01
2017-09-09 18:00:00 2.04 5.00
2017-09-09 18:30:00 5.00 5.02
推荐阅读
- mysql - 错误代码:1172。结果包含多于一行错误
- python - 在众多的 Python 文件复制函数中,如果复制被中断,哪些是安全的?
- sql - 月份和年份的 SQL 查询
- docker - cloudbuild.yaml 上的错误:(gcloud.builds.submit)将 cloudbuild.yaml 解释为构建配置:“列表”对象没有属性“项目”
- powershell - 使用不同的凭据连接到网络共享
- java - InputStream:无法读取字符串
- html - 字幕在
- cron - 无效的 cron 错误,而我在 apache camel 中动态地向 Quartz2 消费者路由提供 cron 变量
- python - 根据文本文件重命名多个文件夹名称
- jenkins - 如何在詹金斯中使用 azuread 凭据