gpt4 book ai didi

python - Pandas :具有多个索引的滚动总和(即面板数据)

转载 作者:行者123 更新时间:2023-11-28 22:34:31 24 4
gpt4 key购买 nike

我有一个包含多个索引的数据框,我想为索引中的每个 ID 创建一些数据的滚动总和。

例如,假设我有两个索引(公司)并且我有一些名为zdata 的数据。工作示例如下:

import pandas as pd

# generating data
firms = ['firm1']*5+['firm2']*5
years = [2000+i for i in range(5)]*2
zdata = [1 for i in range(10)]

# Creating the dataframe
mydf = pd.DataFrame({'firms':firms,'year':years,'zdata':zdata})

# Setting the two indexes
mydf.set_index(['firms','year'],inplace=True)

print(mydf)
zdata
firms year
firm1 2000 1
2001 1
2002 1
2003 1
2004 1
firm2 2000 1
2001 1
2002 1
2003 1
2004 1

现在,我想为每家公司重新计算滚动总和。但是,如果我输入

new_rolling_df=mydf.rolling(window=2).sum()

print(new_rolling_df)
zdata
firms year
firm1 2000 NaN
2001 2.0
2002 2.0
2003 2.0
2004 2.0
firm2 2000 2.0
2001 2.0
2002 2.0
2003 2.0
2004 2.0

不考虑多重指标,只是做一个普通的滚动求和。任何人都知道我应该怎么做(特别是因为我有比 2(公司、 worker 、国家、年份)更多的索引

谢谢,

阿德里安

最佳答案

选项 1

mydf.unstack(0).rolling(2).sum().stack().swaplevel(0, 1).sort_index()

enter image description here

选项 2

mydf.groupby(level=0, group_keys=False).rolling(2).sum()

enter image description here

关于python - Pandas :具有多个索引的滚动总和(即面板数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38929737/

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