py / pandas dataframe - 如何将每日收盘价格改为月收盘价?

时间:2017-06-25 13:43:32

标签: python pandas

我的pandas数据框如下所示:

            VTI       VOO       VGK      IEV
2017-06-20  125.5809  224.3456  55.2675  44.43
2017-06-21  125.1100  223.5591  54.8000  44.05
2017-06-22  124.7800  223.1609  54.8200  44.06
2017-06-23  124.8100  223.1200  54.8400  44.10

我跑

m_price = price.resample('BM', how=lambda x: x[-1])

有效,但告诉我:“FutureWarning:如何在.resample()中弃用 新语法是.resample(...).. apply()“

有人可以帮助我使用新语法吗?谢谢 (Py 3.6.1 / Pandas 0.20.2)

3 个答案:

答案 0 :(得分:1)

v0.18。0(2016年3月13日)文件说,

  

API打破.resample方法的更改,使其更像.groupby,see here

您可以在重新采样器对象上使用these函数。

我的回答是,

m_price = price.resample('BM').last()
print(m_price)

               VTI     VOO    VGK   IEV
2017-06-30  124.81  223.12  54.84  44.1

答案 1 :(得分:1)

DataFrame.resample()返回Resampler个对象。然后你可以使用其中一种方法:http://pandas.pydata.org/pandas-docs/stable/api.html#resampling

在这种情况下,您需要last()

m_price = price.resample('BM').last()

答案 2 :(得分:1)

如果您不需要在降频采样频率上汇总数据,可以使用pd.DataFrame.asfreq

df.asfreq('BM')