gpt4 book ai didi

按组划分的 Python 百分比变化

转载 作者:行者123 更新时间:2023-12-04 09:32:33 24 4
gpt4 key购买 nike

我想获得 Value1 和 Value 2 的逐年季度变化

df =\
pd.DataFrame({'Year':[2010,2010,2010,2010,2009,2009,2009,2009],
'Quarter':[1,1,2,2,1,1,2,2],
'Section':['A', 'B', 'A', 'B','A', 'B','A', 'B'],
'Value1': [1,2,3,4,5,6,7,8],
'Value2':[10,20,30,40,50,60,70,80]
})
df.set_index(['Year', 'Quarter', 'Section'], inplace=True)
df
目前我正在这样做:
##Not ideal
df_2009 =\
(df
.reset_index()
.where(lambda x: x.Year == 2009)
.dropna()
.astype({'Quarter':'int16'})
.set_index(['Quarter', 'Section'])
.drop('Year', axis=1)
)

df_2010 =\
(df
.reset_index()
.where(lambda x: x.Year == 2010)
.dropna()
.astype({'Quarter':'int16'})
.set_index(['Quarter', 'Section'])
.drop('Year', axis=1)
)

df_2010/df_2009
但是,它不可扩展。我想知道有没有更好的方法来做到这一点。例如 Pandas 函数或 UDF
附言结果是由
(somedata
.groupby(['Year', 'Quarter', 'Section'])
.agg({'Value1':'sum',
'Value2':'sum'})
)

最佳答案

你在寻找这样的东西:

df.groupby(['Quarter','Section']).pct_change(-1)
输出:
                        Value1    Value2
Year Quarter Section
2010 1 A -0.800000 -0.800000
B -0.666667 -0.666667
2 A -0.571429 -0.571429
B -0.500000 -0.500000
2009 1 A NaN NaN
B NaN NaN
2 A NaN NaN
B NaN NaN

关于按组划分的 Python 百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62767949/

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