python pandas根据年龄选择值

我想弄清楚如何在熊猫中做到这一点,到目前为止没有运气.

我的数据框如下所示:

                        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\')')

谢谢.

最佳答案 假设您不必处理时区:

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部分.对于这些事情来说真是太棒了.

点赞