Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按选定的时间间隔获取项目_Python_Pandas_Python 2.7_Dataframe - Fatal编程技术网

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]

这并不比原来的快,但一种处理循环的新方法将在将来使用它。