gpt4 book ai didi

python - 重新采样为 periodIndex 并使用初始值

转载 作者:行者123 更新时间:2023-12-01 06:31:48 24 4
gpt4 key购买 nike

我正在尝试使用重新采样周期的初始值,以便与 first()last() 一起使用。例如,我从每日数据开始,然后重新采样为每月数据:

df.resample('M', kind='period')

但是当我计算 last() 的差异时,权益的第一个周期值将为零:

df.Equity.last().diff()

当前结果(2020年1月1日的净值是1000):

            Equity    Result
Date
2020-1-31 5000 0
2020-2-29 7500 2500
2020-3-31 12500 5000

期望的结果:

            Equity    Result
Date
2020-1-31 5000 4000
2020-2-29 7500 2500
2020-3-31 12500 5000

我怎样才能做到这一点,以便第一个周期值为 last() - first() ,后面的周期值为 last() - last() 因为这两个值都可用。是否有其他方法可以实现此目的,我很确定我不需要每次执行此操作时都需要在 df 中插入虚拟线。

具有不同值的 DF 示例:

df = pd.DataFrame([n*100 for n in range(10)])
idx = pd.period_range('2020-01-28 09:00', periods=10, freq='D')
df.iloc[0] = 100
df = df.set_index(idx)
dfrs = df.resample('M', kind='period').last().diff()

我预计 2020-01 年 dfrs 的结果为 200 (300-100),而不是 np.nan

最佳答案

一个可能的想法是使用 fillna 替换第一个值:

df = pd.DataFrame([n*100 for n in range(10)])
idx = pd.period_range('2020-01-28 09:00', periods=10, freq='D')
df.iloc[0] = 100
df = df.set_index(idx)
dfrs = df.resample('M', kind='period').last()
dfrs = dfrs.diff().fillna(dfrs[0].iat[0] - df[0].iat[0])
print (dfrs)
0
2020-01 200.0
2020-02 600.0

关于python - 重新采样为 periodIndex 并使用初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59871945/

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