如何通过删除每隔一行(每30分钟测量一次)来重新采样数据帧

时间:2016-05-17 11:52:57

标签: python pandas

我有一个时间序列的测量DataFrame,每30分钟加盖一次(yyyy / mm / dd 00:30:00,yyyy / mm / dd 01:00:00等),我只是想做一个通过丢弃半小时测量来简单地重新采样,并且仅保持每小时测量,这可以通过每隔一行丢弃来完成。有关如何执行此操作的任何建议。

1 个答案:

答案 0 :(得分:1)

要删除所有其他行,保留第一行,请使用df.iloc[::2]

要从第二行开始删除所有其他行,请使用df.iloc[1::2]

或者,由于时间序列ts具有DatetimeIndex,您可以使用ts.index.minute == 0选择分钟等于0的行:

In [146]: ts = pd.Series(1, index=pd.date_range('2000-1-1', periods=10, freq='30T'))

In [147]: ts
Out[147]: 
2000-01-01 00:00:00    1
2000-01-01 00:30:00    1
2000-01-01 01:00:00    1
2000-01-01 01:30:00    1
2000-01-01 02:00:00    1
2000-01-01 02:30:00    1
2000-01-01 03:00:00    1
2000-01-01 03:30:00    1
2000-01-01 04:00:00    1
2000-01-01 04:30:00    1
Freq: 30T, dtype: int64

In [148]: ts.loc[ts.index.minute == 0]
Out[148]: 
2000-01-01 00:00:00    1
2000-01-01 01:00:00    1
2000-01-01 02:00:00    1
2000-01-01 03:00:00    1
2000-01-01 04:00:00    1
Freq: 60T, dtype: int64