python - 熊猫从每日数据中获得每月开盘价?
问题描述
从 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
。
解决方案
我会这样做
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)})
推荐阅读
- css - 如何在颤振中使用文本比例因子属性
- php - 如何在php数组中调用变量
- java - 错误:无法创建 Java 虚拟机 无法为 Minecraft 服务器分配足够的内存
- pandas - 如何有效地将列表字典转换为 Pandas 数据框?
- delphi - Delphi TFDMemTable、CloneCursor 和源表不同步,除非调用了 Refresh
- google-sheets - 谷歌表条件导入范围
- laravel - 如何解决 laravel 驱动问题?
- python - 用 pandas 计算未完成事件的数量
- r - 传递函数的参数
- python - Python,将从 ImageDataGenerator 获得的训练和验证图像的数量存储在变量中以供以后使用