首页 > 解决方案 > 熊猫从每日数据中获得每月开盘价?

问题描述

从 2010 年 1 月开始,我有大约 700 行数据。

我试图找到每月的变动,即一个月内打开的第一个记录数据减去该月关闭的最后记录数据。

Groupby允许sum()mean()我不知道如何获得上述两个数据点。

 df
 0    2010-04-01   9464.15   9507.75
 1    2010-04-05   9593.55   9698.60
 2    2010-04-06   9732.60   9728.20
 3    2010-04-07   9778.50   9681.05
 4    2010-04-08   9676.70   9520.00
 5    2010-04-09   9538.00   9656.50
 6    2010-04-12   9661.20   9575.45
 7    2010-04-13   9565.05   9483.00
 8    2010-04-15   9501.60   9344.60
 9    2010-04-16   9345.50   9353.75
 10   2010-04-19   9273.85   9302.90
 11   2010-04-20   9314.55   9446.10
 12   2010-04-21   9477.10   9555.30
 13   2010-04-22   9534.05   9623.25
 14   2010-04-23   9653.15   9813.30
 15   2010-04-26   9890.80   9839.15
 16   2010-04-27   9827.00   9756.45
 17   2010-04-28   9630.35   9634.90
 18   2010-04-29   9652.60   9803.80
 19   2010-04-30   9809.40   9870.35
 20   2010-05-03   9809.40   9775.50
 21   2010-05-04   9816.60   9623.70
 22   2010-05-05   9461.35   9581.85
 23   2010-05-06   9588.85   9582.00
 24   2010-05-07   9426.65   9276.10
 25   2010-05-10   9419.50   9656.25
 26   2010-05-11   9683.20   9626.10
 27   2010-05-12   9640.80   9722.20
 28   2010-05-13   9788.35   9773.35
 29   2010-05-14   9738.15   9589.05

期望的输出

 df
      Date         Open      Close     
 0    2010-APR     9464.15   9634.90  # Close, is from 2010-04-30
 1    2010-MAY     9809.40   9589.05  # Close, if from 2010-05-14

如果再有两列,例如Open Date和,那就太好了Close Date

标签: pythonpandas

解决方案


我会这样做

df["Date] = pd.to_datetime(df["Date"])
gb = df.groupby([df.Date.dt.month])
pd.DataFrame({'Open':gb.Open.nth(0), 'Close':gb.Close.nth(-1)})

推荐阅读