gpt4 book ai didi

python-3.x - Pandas 通过切片计算 CAGR

转载 作者:行者123 更新时间:2023-12-05 09:20:34 24 4
gpt4 key购买 nike

给定以下数据框:

df = pd.DataFrame({'A' : ['1','2','3','7'],
'B' : [7,6,5,4],
'C' : [5,6,7,1],
'D' : [1,9,9,8]})
df=df.set_index('A')
df
B C D
A
1 7 5 1
2 6 6 9
3 5 7 9
7 4 1 8

我正在尝试计算 compound annual growth rate (CAGR) .我试图避免使用列名。这是我想出的:

df['CAGR']=((df[df.columns[-1:]]/df[df.columns[:1]])**(1/len(df.columns)))-1

但是,它会抛出这个错误:

ValueError: Wrong number of items passed 2, placement implies 1

我测试了公式的每一部分,它返回了我需要的列,所以我很困惑。

提前致谢!

最佳答案

您正在以返回对象为 DataFrame 的方式切片 DataFrame

df[df.columns[-1:]]

-1: 导致 df.columns[-1:] 返回 [column_name] 而不是 column_name。因此,df[df.columns[-1:]] 是一个 DataFrame。这意味着当您尝试进行除法时,pandas 会尝试排列索引,包括列。为了解决这个问题。你本可以这样做:

df[df.columns[-1]]

使用-1代替-1:

但是,我会这样做的。

df['CAGR'] = df.iloc[:, -1].div(df.iloc[:, 0]).pow(1./(len(df.columns) - 1)).sub(1)

print df

B C D CAGR
A
1 7 5 1 -0.622036
2 6 6 9 0.224745
3 5 7 9 0.341641
7 4 1 8 0.414214

关于python-3.x - Pandas 通过切片计算 CAGR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355924/

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