作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在执行一个简单的财务数据示例,试图制作一个经典的烛台图。为此,我必须计算每个时间单位的开盘价、最大值、最小值和收盘价。我决定将 resample 函数与 groupby 一起使用(针对每个符号)。为了避免多索引杂耍,我决定使用 pd.NamedAgg 函数来简化一切:
candles = (data.set_index('trade_datetime')
.groupby('instrument_symbol')
.resample('1T')
.agg(open=pd.NamedAgg("trade_price", "first"),
max=pd.NamedAgg("trade_price", "max"),
median=pd.NamedAgg("trade_price", "median"),
min=pd.NamedAgg("trade_price", "min"),
close=pd.NamedAgg("trade_price", "last"),
std=pd.NamedAgg("trade_price", np.std),
volume=pd.NamedAgg("trade_quantity", "sum")).reset_index())
不幸的是我得到了这个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<timed exec> in <module>
TypeError: aggregate() missing 1 required positional argument: 'func'
删除重采样时我没有收到错误消息:
candles = (data.set_index('trade_datetime')
.groupby('instrument_symbol')
#.resample('1D')
.agg(open=pd.NamedAgg("trade_price", "first"),
max=pd.NamedAgg("trade_price", "max"),
median=pd.NamedAgg("trade_price", "median"),
min=pd.NamedAgg("trade_price", "min"),
close=pd.NamedAgg("trade_price", "last"),
std=pd.NamedAgg("trade_price", np.std),
volume=pd.NamedAgg("trade_quantity", "sum")).reset_index())
instrument_symbol open max median min close std volume
0 PETR4 31.0 31.0 30.2 28.39 30.0 0.714111 12400
我使用的是 pandas 1.0.1,下面有一些示例可以重现错误。
trade_datetime instrument_symbol trade_price trade_quantity
1166911 2019-11-04 10:32:09.737 PETR4 31.00 200
1174414 2019-11-04 11:30:14.359 PETR4 30.71 300
1208601 2019-11-04 15:23:06.619 PETR4 30.23 100
1355062 2019-11-05 17:06:03.523 PETR4 29.72 200
1260316 2019-11-06 11:11:48.144 PETR4 28.39 1100
1295823 2019-11-06 11:49:00.767 PETR4 29.50 100
1343467 2019-11-06 15:52:42.506 PETR4 29.42 100
1261615 2019-11-07 13:12:30.599 PETR4 30.05 200
1297542 2019-11-07 15:28:37.714 PETR4 30.85 600
1305454 2019-11-07 15:42:27.041 PETR4 30.90 100
1323388 2019-11-07 16:48:32.382 PETR4 30.87 100
1381162 2019-11-08 10:24:50.643 PETR4 30.20 100
1385193 2019-11-08 11:05:14.777 PETR4 30.66 9000
1423408 2019-11-08 16:46:33.172 PETR4 30.11 100
1447363 2019-11-08 17:52:57.999 PETR4 30.00 100
使用以列作为键、聚合函数作为值的字典的旧语法是可行的。我知道有多种方法可以检索此结果,但我真的很喜欢使用这个新的 NamedAgg 函数。
我做错了什么吗?这是一个错误吗?我不太愿意打开一个问题,因为一切似乎都很好。
最佳答案
这是一个错误。 Solved在 Pandas >=1.4.0 中。尝试 <1.4.0 的解决方法:func = None。
.agg(func = None, open=pd.NamedAgg("trade_price", "first") ...
关于python - Pandas 命名聚合不适用于 resample agg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60788893/
我是一名优秀的程序员,十分优秀!