【发布时间】:2019-09-27 17:56:40
【问题描述】:
我有 10 分钟间隔的测量数据。 问题是有时时间间隔是 9min 59 seconds 或 10min 01 seconds ,有时我有一个缺失值,所以时间间隔是 20 分钟。
我希望代码执行以下操作: 重新采样 10 分钟的值(我已经实现了)。 问题是,间隔不是 10:00 分钟(9 分 59 秒或 10 分 01 秒)的测量值丢失了,我想保留这些数据。
这是我的测试代码:
import pandas as pd
import numpy as np
df = pd.DataFrame(columns=('Datetime','V_L1','V_H3_L1','V_H3_L1_in_P'))
df['Datetime'] = ['01.01.2012 00:00:00', '01.01.2012 00:10:01', '01.01.2012 00:29:59','01.01.2012 00:50:00']
df['V_L1'] = [219,219.7,np.nan,220.3]
df['V_H3_L1'] = [3,1,2.5, np.nan]
df['Datetime'] = pd.to_datetime(df['Datetime'])
df.set_index('Datetime')
df = df.set_index('Datetime').resample('600S').asfreq()
输出:
V_L1 V_H3_L1 V_H3_L1_in_P
Datetime
2012-01-01 00:00:00 219.0 3.0 NaN
2012-01-01 00:10:00 NaN NaN NaN
2012-01-01 00:20:00 NaN NaN NaN
2012-01-01 00:30:00 NaN NaN NaN
2012-01-01 00:40:00 NaN NaN NaN
2012-01-01 00:50:00 220.3 NaN NaN
希望的输出:
V_L1 V_H3_L1 V_H3_L1_in_P
Datetime
2012-01-01 00:00:00 219.0 3.0 NaN
2012-01-01 00:10:00 219.7 1.0 NaN
2012-01-01 00:20:00 NaN NaN NaN
2012-01-01 00:30:00 NaN 2.5 NaN
2012-01-01 00:40:00 NaN NaN NaN
2012-01-01 00:50:00 220.3 NaN NaN
因此,如果频率集(10 分钟、600 秒)的增量小于几秒 + 或 - 5 秒,我想保持数据接受。
【问题讨论】:
-
df = df.set_index('Datetime').resample('600S’).first()?也可以使用.mean()、.last()等。 -
既然您似乎希望
10:01与:10 一起使用,而29:59与:20 一起使用,看来您可能想要在重新采样之前执行df['Datetime'] = df.Datetime.dt.floor('10min')?否则,还有.ceil()或.round() -
@ALollz,实际上希望的输出有一个错误的数据,我希望 29:59 舍入到 30!抱歉,我现在更正了希望的输出数据。