2
我有一個數據框與多個索引,並希望創建一些數據的滾動總和,但索引中的每個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(公司,員工,國家,一年甚至更多的索引)
感謝,
阿德里安
太謝謝你了!我將使用第二種解決方案,因爲它需要太多的內存來卸載我擁有的大型數據框。快速評論,你能解釋一下「level = 0」嗎?數字0指的是什麼?特別是因爲我想用更多的索引來複制它。 –
零級是索引的第一級。如果按索引分組,則即使只有一個級別,也必須指定級別。而且,這是告訴groupby我想按索引級別分組的唯一方法。 – piRSquared
@ piRSquared-感謝您提供這方面的信息,讓這項工作很困難。對我來說(我認爲)是修正它的group_keys。你能解釋一下這是什麼嗎?沒有這個,我有一列NaNs。再次感謝你! –