我try 计算Dataframe
df1
中每个元素在x
天内的累积积(例如3).有没有一种有效的方法可以做到这一点?到目前为止,我只知道在行上生成一个正常的累积积,而没有将回溯期固定为x
天(=df2
).例如:
- 2022-01-02 ID1:1.0528=(忽略NaN)0.94*1.12
- 2022-01-05 ID1:1.2002=0.94*1.12*1.14
- 2022-01-09 ID1:1.4045=1.12*1.14*1.10
最佳情况下,它还将忽略NaN值,并计算剩余数字的累积回报.到目前为止,我只知道如何通过创建一个副本并移动它来计算,但我想计算50行以上的许多列的累积积,这是不高效的.
df1:
ID1 ID2
Date
2022-01-02 NaN 0.95
2022-01-05 0.94 0.98
2022-01-09 1.12 NaN
2022-01-10 1.14 1.02
2022-01-11 1.10 1.00
2022-01-12 0.92 0.82
df2:
ID1 ID2
Date
2022-01-02 1.0528 0.9309
2022-01-05 1.2002 0.9996
2022-01-09 1.4045 1.0200
2022-01-10 1.1537 0.8364
2022-01-11 1.0120 0.8200
2022-01-12 0.9200 0.8200
对于可复制性:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'Date':['2022-01-02', '2022-01-05', '2022-01-09', '2022-01-10', '2022-01-11', '2022-01-12'],
'ID1':[np.nan, 0.94, 1.12, 1.14, 1.1, 0.92],
'ID2':[0.95, 0.98, np.nan, 1.02, 1, 0.82]})
df1 = df1.set_index('Date')
非常感谢您的建议!