【发布时间】:2018-02-10 07:00:33
【问题描述】:
这个问题类似于Selecting Pandas DataFrame records for many years based on month & day range,但是问题和答案似乎都没有涵盖我的情况
import pandas as pd
import numpy as np
rng = pd.date_range('2010-1-1', periods=1000, freq='D')
df = pd.DataFrame(np.random.randn(len(rng)), index=rng, columns=['A'])
df.head()
A
2010-01-01 1.098302
2010-01-02 -1.384821
2010-01-03 -0.426329
2010-01-04 -0.587967
2010-01-05 -0.853374
现在我想根据每年的年度回报期对我的 DataFrame 进行子集化。 例如,一个时期可以定义为从 2 月 15 日到 10 月 3 日
startMM, startdd = (2,15)
endMM, enddd = (10,3)
现在我尝试根据这个时期对我的多年 DataFrame 进行切片:
subset = df[((df.index.month == startMM) & (startdd <= df.index.day)
| (df.index.month == endMM) & (df.index.day <= enddd))]
但这仅返回在startMM 和endMM 中定义的月份,而不是日期之间的实际时间段。任何帮助都将不胜感激。
subset.index.month.unique()
Int64Index([2, 10], dtype='int64')
【问题讨论】:
标签: python pandas datetime slice