[英]Extract data between two dates each year
我有一个2000年至2015年的每日数据时间序列。我想要的是另一个单一时间序列,它仅包含4月15日至6月15日之间的每年数据(因为这是与我的分析有关的时期)。 我已经编写了一个代码来自己做同样的事情,如下所示:
import pandas as pd
df = pd.read_table(myfilename, delimiter=",", parse_dates=['Date'], na_values=-99)
dff = df[df['Date'].apply(lambda x: x.month>=4 and x.month<=6)]
dff = dff[dff['Date'].apply(lambda x: x.day>=15 if x.month==4 else True)]
dff = dff[dff['Date'].apply(lambda x: x.day<=15 if x.month==6 else True)]
我认为此代码效率太低,因为它必须对数据帧执行3次操作才能获得所需的子集。
我想知道以下两件事:
尝试这个:
index = pd.date_range("2000/01/01", "2016/01/01")
s = index.to_series()
s[(s.dt.month * 100 + s.dt.day).between(415, 615)]
让数据框看起来像这样:
df = pd.DataFrame({'Date': pd.date_range('2000-01-01', periods=365*10, freq='D'),
'Value': np.random.random(365*10)})
创建年份设置为相同值的一系列日期
x = df.Date.apply(lambda x: pd.datetime(2000,x.month, x.day))
使用该系列进行过滤以从数据框中选择
df.values[(x >= pd.datetime(2000,4,15)) & (x <= pd.datetime(2000,6,15))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.