簡體   English   中英

計算按列分組的 Pandas 滾動值

[英]Calculating Pandas rolling values grouped by a column

我有以下 Pandas 數據框,按國家/年划分 GDP%。 我有兩個國家,美國(6 行)和 FR(4 行)。

我需要按國家/地區獲得 GDP% 的 3 期移動平均值。 如果我使用滾動窗口函數,我會得到第一個 FR 移動平均線,取自美國的最后兩個移動平均線,這是錯誤的。 如何滾動按國家/地區分組的數據?

df = pd.DataFrame({
    'country':  ['US','US','US','US', 'US', 'US', 'FR','FR','FR','FR'],
    'year': [1990, 1991, 1992, 1993, 1994, 1995, 1990, 1991, 1992, 1993],
    'gdp': [1.2, 1.4, 1.7, 2.1, 2.3, 1.9, 4.1, 4.6, 4.3, 4.4]
})

print(df)

    country year    gdp
0   US  1990    1.2
1   US  1991    1.4
2   US  1992    1.7
3   US  1993    2.1
4   US  1994    2.3
5   US  1995    1.9
6   FR  1990    4.1
7   FR  1991    4.6
8   FR  1992    4.3
9   FR  1993    4.4

df2 = df['gdp'].rolling(3, min_periods=1).mean()

print(df2)

0    1.200000
1    1.300000
2    1.433333
3    1.733333
4    2.033333
5    2.100000
6    2.766667
7    3.533333
8    4.333333
9    4.433333

嘗試這個:

df['rolling 3 mean'] = df.groupby('country', group_keys=False)['gdp']\
                         .rolling(3, min_periods=1).mean().droplevel

輸出:

  country  year  gdp  rolling 3 mean
0      US  1990  1.2        1.200000
1      US  1991  1.4        1.300000
2      US  1992  1.7        1.433333
3      US  1993  2.1        1.733333
4      US  1994  2.3        2.033333
5      US  1995  1.9        2.100000
6      FR  1990  4.1        4.100000
7      FR  1991  4.6        4.350000
8      FR  1992  4.3        4.333333
9      FR  1993  4.4        4.433333

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM