gpt4 book ai didi

pandas - 在 Pandas 多索引 DataFrame 上扩展指数权重,其中每一天都是一个矩阵

转载 作者:行者123 更新时间:2023-12-01 05:52:26 25 4
gpt4 key购买 nike

我有一个多索引数据框,其中第一个索引是日期,每天是一个 3x3 矩阵:

multi_index = pd.MultiIndex.from_product([[pd.datetime(2017, 1, 1),pd.datetime(2017, 1, 2),pd.datetime(2017, 1, 3)], ['A','B','C']])
df = pd.DataFrame(index=multi_index, data={"A": [1, 2, 3, 4, 1, 2, 3, 4, 2],"B": [1, 2, 3, 4, 1, 2, 3, 4, 2],"C": [1, 2, 3, 4, 1, 2, 3, 4, 2]})

我想创建一个与 df 具有相同结构的新数据帧,但这些值是矩阵扩展窗口的指数加权平均值。

因此,对于 2017-01-01,新 df 与旧 df 相同。在 2017-01-02 上,新的 df 是来自 df 的 2017-01-01 和 2017-01-02 上的 2 个矩阵的指数加权平均值。在 2017-01-03 上,它是 3 个矩阵的指数加权平均值。

我正在尝试 groupby/expanding/apply/ewm 的组合,但没有找到解决方案。

最佳答案

下面对你有用吗?按第二个索引分组,然后应用 pandas.DataFrame.ewm

print(df)
A B C
2017-01-01 A 1 1 1
B 2 2 2
C 3 3 3
2017-01-02 A 4 4 4
B 1 1 1
C 2 2 2
2017-01-03 A 3 3 3
B 4 4 4
C 2 2 2

result = df.groupby(level=1).apply(lambda x: x.ewm(1).mean())
print(result)
A B C
2017-01-01 A 1.000000 1.000000 1.000000
B 2.000000 2.000000 2.000000
C 3.000000 3.000000 3.000000
2017-01-02 A 3.000000 3.000000 3.000000
B 1.333333 1.333333 1.333333
C 2.333333 2.333333 2.333333
2017-01-03 A 3.000000 3.000000 3.000000
B 2.857143 2.857143 2.857143
C 2.142857 2.142857 2.142857

关于pandas - 在 Pandas 多索引 DataFrame 上扩展指数权重,其中每一天都是一个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52601495/

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