大熊猫数据帧在不均匀的时段/分钟内重新取样

时间:2017-11-22 10:23:56

标签: python pandas timestamp average resampling

搜索它但找不到解决方案 - 如果已经有一个sry要求但我会感谢一个链接

我有一个像这样的数据帧(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
...

它计算整个分钟时段。我发现没有选择纠正这个问题。看到“基础”可能是一个选项,但它似乎不是非常直观或很好的编码。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

检查这个我使用的滚动会滚动到给定的频率并进行数学运算,例如sum,mean等。在这里你需要知道开始和结束日期时间值。

代码:

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。让我知道这对你有用。