我正试图弄清楚如何在熊猫中做到这一点,到目前为止运气不好。
我的数据框如下所示:
A B C D
time
2013-07-19 14:54:03 1354.85 92.20 1453.44 7746.56
2013-07-19 14:56:02 1348.30 44.60 1399.83 7800.17
2013-07-19 14:58:02 1285.76 33.93 1325.31 7874.69
...
2013-12-16 14:24:02 1114.74 136.59 1254.04 7945.96
2013-12-16 14:26:03 1180.76 65.39 1248.59 7951.41
2013-12-16 14:28:03 1015.98 126.96 1147.68 8052.32
此数据经常更新,我希望能够选择过去24小时,上周或上个月的所有值等。
我目前的解决方法是使用如下查询从数据库中提取数据:
24_hour_data = ('select time, A, B, C, D from \
agg where time >= datetime(\'now\', \'-24 Hours\', \'localtime\')')
感谢。
答案 0 :(得分:2)
假设您不必处理时区:
import datetime
now = datetime.datetime.now()
yesterday = now + datetime.timedelta(days=-1)
fmt = '%Y-%m-%d' # fmt = '%Y-%m-%d %T' if you want more precision.
df.ix[yesterday.strftime(fmt):now.strftime(fmt)]
用你的例子:
In [17]: now = pd.datetime(2013, 7, 20) # since thats when the data is from
In [18]: yesterday = now + datetime.timedelta(days=-1)
In [19]: df.ix[yesterday.strftime(fmt):now.strftime(fmt)]
Out[19]:
B C D
time
2013-07-19 14:54:03 92.20 1453.44 7746.56
2013-07-19 14:56:02 44.60 1399.83 7800.17
2013-07-19 14:58:02 33.93 1325.31 7874.69
[3 rows x 3 columns]
另请查看arrow库以替换datetime
部分。对于这些事情来说,这太棒了。