gpt4 book ai didi

python - 减少 Pandas 中的一列

转载 作者:太空狗 更新时间:2023-10-29 22:27:12 24 4
gpt4 key购买 nike

我正在尝试将一列(很多)返回数据转换为一列收盘价。在 Clojure 中,我会使用 reductions ,类似于 reduce,但返回所有中间值的序列。

例如

$ c

0.12
-.13
0.23
0.17
0.29
-0.11

# something like this
$ c.reductions(init=1, lambda accumulator, ret: accumulator * (1 + ret))

1.12
0.97
1.20
1.40
1.81
1.61

注意:实际收盘价无关紧要,因此使用 1 作为初始值。我只需要一个“模拟”收盘价。

我的数据的实际结构是 TimeSeries 的命名列的 DataFrame。我想我正在寻找一个类似于 applymap 的函数,但我不想对该函数做一些骇人听闻的事情并从中引用 DF(我想这是解决这个问题的一种方法?)

此外,如果我想保留 returns 数据,但有收盘“价格”,我该怎么办?我是否应该返回一个元组,并将 TimeSeries 设为 (returns, closing_price) 类型?

最佳答案

看起来它还不是一个广为人知的功能,但是您可以使用expanding_apply 来实现 yield 计算:

In [1]: s
Out[1]:
0 0.12
1 -0.13
2 0.23
3 0.17
4 0.29
5 -0.11

In [2]: pd.expanding_apply(s ,lambda s: reduce(lambda x, y: x * (1+y), s, 1))

Out[2]:
0 1.120000
1 0.974400
2 1.198512
3 1.402259
4 1.808914
5 1.609934

我不是 100% 确定,但我相信 expanding_apply 适用于从第一个索引到当前索引的应用系列。我使用内置的 reduce 函数,它的工作方式与您的 Clojure 函数完全一样。

expanding_apply 的文档字符串:

Generic expanding function application

Parameters
----------
arg : Series, DataFrame
func : function
Must produce a single value from an ndarray input
min_periods : int
Minimum number of observations in window required to have a value
freq : None or string alias / date offset object, default=None
Frequency to conform to before computing statistic
center : boolean, default False
Whether the label should correspond with center of window

Returns
-------
y : type of input argument

关于python - 减少 Pandas 中的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14542145/

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