Pandas将每日数据转换为每周数据的新方法是什么?

时间:2017-11-12 05:08:02

标签: python-2.7 pandas

我几乎复制了代码here,将我的每日股票数据转换为每周数据。它说的是.resample()中的args如何被弃用。我认为它要我做.max().min()之类的事情。有没有一个简洁的方法来做到这一点,以至于我不是每次都得到这个消息?

如果它有助于我的DataFrame:

            Open  High   Low  Close  Adj Close    Volume
Date                                                    
2017-10-23  4.99  5.04  4.94   4.94       4.94  13412313
2017-10-24  4.95  5.02  4.95   5.00       5.00   8655448
2017-10-25  5.02  5.05  5.00   5.05       5.05  13721794
2017-10-26  4.98  5.00  4.82   4.87       4.87  26708894
2017-10-27  4.88  4.91  4.77   4.79       4.79  25369776
2017-10-30  4.85  4.85  4.72   4.74       4.74  13791695
2017-10-31  4.73  4.73  4.64   4.64       4.64  20530300
2017-11-01  4.76  4.79  4.67   4.68       4.68  18949283
2017-11-02  4.76  4.92  4.76   4.87       4.87  18523514
2017-11-03  4.88  4.90  4.76   4.80       4.80  13961895
2017-11-06  4.83  4.86  4.80   4.80       4.80  10856694
2017-11-07  4.92  5.06  4.91   5.03       5.03  24469556
2017-11-08  4.96  4.98  4.88   4.90       4.90  19049326
2017-11-09  4.96  4.96  4.88   4.88       4.88  12104442
2017-11-10  4.90  4.91  4.82   4.86       4.86  12412000

1 个答案:

答案 0 :(得分:3)

在重新采样中使用agg代替how(在建议的代码链接中修改),即

output = df.resample('W').agg({'Open': take_first, 
                               'High': 'max',
                               'Low': 'min',
                               'Close': take_last,
                               'Volume': 'sum'}, 
                               loffset = pd.offsets.timedelta(days=-6))

               Open       High        Low      Close   Volume
Date                                                           
2010-01-10  38.660000  40.700001  38.509998  40.290001  5925600
2010-01-17  40.209999  40.970001  39.279999  40.450001  6234600

警告说:

  

FutureWarning:新语法不推荐使用.resample()   .resample(......)应用()

因此,我们可以使用聚合apply代替agg来传递函数的字典。