python - pandas 数据帧在不均匀的时间/分钟内重新采样

标签 python pandas timestamp average resampling

搜索了它,但没有找到解决方案 - 如果已经有人询问,但我会感谢链接

我有一个像这样的数据框(df):

timestamp          value
2016-03-11 07:37:40 24.6018
2016-03-11 07:37:45 24.6075
2016-03-11 07:37:50 24.599
2016-03-11 07:37:55 24.6047
2016-03-11 07:38:00 24.5905
2016-03-11 07:38:05 24.551
...

重要的是,不是在像 07:40:00 这样的偶数分钟开始,而是在 07:37:40 (可能是任何时间)开始,我想重新采样 - 计算平均值,例如5 分钟,标有所用线路的最后时间戳。原始数据的第一个时间戳为 2016-03-11 07:37:40 的期望结果:

2016-03-11 07:42:40 24.608
2016-03-11 07:47:40 24.605
2016-03-11 07:52:40 24.59
...

我尝试使用

df.resample('5T',how='mean',label='right')

df.resample('300S',how='mean',label='right')

结果相同:

2016-03-11 07:40:00 24.618
2016-03-11 07:45:00 24.675
2016-03-11 07:50:00 24.599
...

它计算整分钟的时间段。我找不到正确纠正此问题的选项。看到“base”可能是一个选项,但它似乎不是很直观或编码很好。

如有任何帮助,我们将不胜感激。

最佳答案

检查这一点,我使用了滚动,它将滚动给定的频率并执行诸如总和、平均值等数学运算。在此您需要知道开始和结束日期时间值。

代码:

df.timestamp=pd.to_datetime(df.timestamp)
df.set_index('timestamp',inplace=True)
df = df.rolling('15s').mean()
mask = pd.date_range('2016-03-11 07:37:40','2016-03-11 07:38:05',freq='10S')
df = df.loc[mask]
df

                        value
2016-03-11 07:37:40 24.601800
2016-03-11 07:37:50 24.602767
2016-03-11 07:38:00 24.598067

使用您想要的窗口而不是滚动中的“15s”以及我使用的 date_range。让我知道这对您有用。

关于python - pandas 数据帧在不均匀的时间/分钟内重新采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47432198/

相关文章:

Python:使用 PyCharm 和 IDLE/python 时的不同结果

python - 修补来自不同模块的多个方法(使用 Python mock)

python - Pandas iloc 错误索引导致减法问题

ruby-on-rails - 将字符串转换为 Rails 中的类型时间戳

php - 在 $model->find Yii 中使用 UTC_TIMESTAMP()

python - Flask-Admin 带有表单的批量操作

python - Django 中的 "management.py"是什么?

python - 努力创建数据帧,ParserError : Error tokenizing data. C 错误 : Expected 12 fields in line 15, 看到 16

python - 添加具有翻转值的重复 Pandas 行

java - 如何获取文件 io 的兼容时间戳?