Python 按选定的时间间隔获取项目
我正试图找到一种更快的方法,以不同的时间间隔选择日期。目前,我正在遍历数据帧,然后使用Python 按选定的时间间隔获取项目,python,pandas,python-2.7,dataframe,Python,Pandas,Python 2.7,Dataframe,我正试图找到一种更快的方法,以不同的时间间隔选择日期。目前,我正在遍历数据帧,然后使用iloc查找所需的间隔跨度。不过,性能造成了瓶颈。这些文件很大,而且有很多,所以欢迎任何帮助 #example df = pd.DataFrame(pd.date_range(start='01/01/1980', end='01/01/2020'), columns=['DT']) n = 5 spans = [] max_len = len(df) - n for k in df.index: i
iloc
查找所需的间隔跨度。不过,性能造成了瓶颈。这些文件很大,而且有很多,所以欢迎任何帮助
#example
df = pd.DataFrame(pd.date_range(start='01/01/1980', end='01/01/2020'), columns=['DT'])
n = 5
spans = []
max_len = len(df) - n
for k in df.index:
if k < max_len:
spans.append([df.iloc[k].DT, df.iloc[k + n].DT])
#示例
df=pd.DataFrame(pd.date_范围(start='01/01/1980',end='01/01/2020'),columns=['DT']))
n=5
跨度=[]
最大长度=长度(df)-n
对于df.index中的k:
如果k<最大值:
span.append([df.iloc[k].DT,df.iloc[k+n].DT])
是否有“更好”的方法,即更快。谢谢。这个怎么样:
#example
df = pd.DataFrame(pd.date_range(start='01/01/1980', end='01/01/2020'), columns=['DT'])
n = 5
spans = []
max_len = len(df) - n
for k in df.head(max_len).index:
spans.append([df.iloc[k].DT, df.iloc[k + n].DT])
也许您可以按所需金额移动
DT
列:
df = pd.DataFrame(pd.date_range(start='01/01/2018', end='01/01/2020'), columns=['DT'])
df['DT2'] = df['DT'].shift(-5)
print(df[df['DT2'].notna()])
印刷品:
DT DT2
0 2018-01-01 2018-01-06
1 2018-01-02 2018-01-07
2 2018-01-03 2018-01-08
3 2018-01-04 2018-01-09
4 2018-01-05 2018-01-10
.. ... ...
721 2019-12-23 2019-12-28
722 2019-12-24 2019-12-29
723 2019-12-25 2019-12-30
724 2019-12-26 2019-12-31
725 2019-12-27 2020-01-01
[726 rows x 2 columns]
这并不比原来的快,但一种处理循环的新方法将在将来使用它。