gpt4 book ai didi

python - 如何根据索引进行计算?

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

我是 Python 的新手,希望有人能帮助解决这个问题。我正在尝试根据我的索引在 power bi 中创建一个计算。这样做的原因是因为每当我的一个列有一个新值时,我的索引就会从 1 重置为 250。按类别分类的索引。指数:交易日(1 至 250)类别; [合约年份] 2008 - 2019 每年指数重置。值(value):价格

Table/Raw Data structure
Trade Day Year Norm_Price
1 2008 1.87
2 2008 1.84
3 2008 1.87
. 2008 1.88
. 2008 1.88
250 2008 1.22
1 2009 1.35
2 2009 1.32
3 2009 1.78
. 2009 1.55
. 2009 1.77
250 2009 1.23
and so on

我成功运行了两个函数,但我的问题是,当我的索引返回到一个时,计算继续进行,因为没有索引。我该如何处理?

这是我的代码

第一个计算/新列它工作正常但是当我的索引列返回到一个时它执行从 250 到 1 的计算,这是我不想要的。对于每个交易日等于 1 的时间,我需要我的新列为 0

dataset.loc[0,'Percent_Change'] = 0

for i in range(1, len(dataset)):
dataset.loc[i,'Percent_Change'] = (dataset.loc[i,'Norm_Price'] - dataset.loc[i-1,'Norm_Price']) / dataset.loc[i-1,'Norm_Price']

第二次计算/新列对于每个交易日等于 1 的时间,我需要我的新列为 1

dataset.loc[0,'Norm_Change'] = 1

for i in range(1, len(dataset)):
dataset.loc[i,'Norm_Change'] = dataset.loc[i-1,'Norm_Change'] + (dataset.loc[i,'Percent_Change'] * dataset.loc[i-1,'Norm_Change'])

如果让其根据索引执行计算太困难,也许是if语句?

if trade day = 1 then 1 else perform function in i ??

任何帮助都会有很大帮助!

谢谢!

最佳答案

看起来你可以用 groupby 来做:

df['Percent_Change'] = df.groupby('Year')['Norm_Price'].pct_change().fillna(0)

df['Norm_Change'] = df['Percent_Change'].add(1).groupby(df['Year']).cumprod()

输出:

   Trade Day  Year  Norm_Price  Percent_Change  Norm_Change
0 1 2008 1.87 0.000000 1.000000
1 2 2008 1.84 -0.016043 0.983957
2 3 2008 1.87 0.016304 1.000000
3 . 2008 1.88 0.005348 1.005348
4 . 2008 1.88 0.000000 1.005348
5 250 2008 1.22 -0.351064 0.652406
6 1 2009 1.35 0.000000 1.000000
7 2 2009 1.32 -0.022222 0.977778
8 3 2009 1.78 0.348485 1.318519
9 . 2009 1.55 -0.129213 1.148148
10 . 2009 1.77 0.141935 1.311111
11 250 2009 1.23 -0.305085 0.911111

关于python - 如何根据索引进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62218113/

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