gpt4 book ai didi

python - Pandas 命名聚合不适用于 resample agg

转载 作者:行者123 更新时间:2023-12-05 07:11:23 36 4
gpt4 key购买 nike

我正在执行一个简单的财务数据示例,试图制作一个经典的烛台图。为此,我必须计算每个时间单位的开盘价、最大值、最小值和收盘价。我决定将 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/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com