假设我有以下数据
>>> import pandas as pd
>>> import numpy as np
>>> index = pd.date_range('20180101', periods=10, freq='D')
>>> df = pd.DataFrame(np.random.randn(10), index = index)
>>> df
0
2018-01-01 -1.420260
2018-01-02 0.797090
2018-01-03 -3.054759
2018-01-04 1.473528
2018-01-05 -1.061746
2018-01-06 0.352680
2018-01-07 0.030430
2018-01-08 0.682517
2018-01-09 -1.574081
2018-01-10 -2.828765
我想选择落在两个时间戳之间的子数据帧。
>>> time1 = pd.Timestamp('2018-01-04')
>>> time2 = pd.Timestamp('2018-01-08')
我想以某种方式选择行
2018-01-03 -3.054759
2018-01-04 1.473528
2018-01-05 -1.061746
2018-01-06 0.352680
2018-01-07 0.030430
2018-01-08 0.682517
答案 0 :(得分:4)
你可以
In [36]: df.loc['2018-01-03':'2018-01-08']
Out[36]:
0
2018-01-03 -0.301602
2018-01-04 -2.272758
2018-01-05 -0.227374
2018-01-06 -0.476740
2018-01-07 0.921640
2018-01-08 -2.025022
或者,
In [39]: df.loc[time1:time2]
Out[39]:
0
2018-01-04 -2.272758
2018-01-05 -0.227374
2018-01-06 -0.476740
2018-01-07 0.921640
2018-01-08 -2.025022
或者,使用truncate
In [49]: df.truncate(before=time1, after=time2)
Out[49]:
0
2018-01-04 -2.272758
2018-01-05 -0.227374
2018-01-06 -0.476740
2018-01-07 0.921640
2018-01-08 -2.025022
或者,使用
In [54]: df.loc[(df.index > '2018-01-03') & (df.index < '2018-01-08')]
Out[54]:
0
2018-01-04 -2.272758
2018-01-05 -0.227374
2018-01-06 -0.476740
2018-01-07 0.921640
答案 1 :(得分:0)
df[df.index.isin(pd.date_range(time1,time2))]