嗨,我正尝试每周对我的日期时间索引数据进行重新采样。为此,我使用了:
data.resample('W').last()
但是,出现的日期确实是每周采样的,但是有时这些日期是原始数据中不存在的日期。是否可以强制重新采样以便仅获取原始数据中存在的日期?
答案 0 :(得分:0)
如果添加与索引相同的新列date
,则df.resample('W').last()
还将返回每个重采样组中的最后一个日期。您可以将这些日期设置为新索引。例如,
import numpy as np
import pandas as pd
np.random.seed(2019)
N = 40
df = pd.DataFrame(np.random.randint(10, size=(N,2)), columns=list('AB'), index=pd.date_range('2000-1-1', periods=N, freq='B'))
df['date'] = df.index
result = df.resample('W').last()
# A B date
# 2000-01-09 7 8 2000-01-07
# 2000-01-16 4 0 2000-01-14
# 2000-01-23 3 5 2000-01-21
# 2000-01-30 3 7 2000-01-28
# 2000-02-06 6 1 2000-02-04
# 2000-02-13 5 5 2000-02-11
# 2000-02-20 2 7 2000-02-18
# 2000-02-27 9 0 2000-02-25
result = result.set_index('date')
收益
In [154]: result
Out[154]:
A B
date
2000-01-07 7 8
2000-01-14 4 0
2000-01-21 3 5
2000-01-28 3 7
2000-02-04 6 1
2000-02-11 5 5
2000-02-18 2 7
2000-02-25 9 0