如何使用具有不同 ID 和时间的面板数据的平均值创建一个新的数据框?
How to create a new dataframe with an average of panel data with different IDs and times?
我有一个数据集,df
如下所示:
Date
Code
City
State
Ranking
2020-01
10001
Los Angeles
CA
0.852
2020-02
10001
Los Angeles
CA
0.945
2020-03
10001
Los Angeles
CA
0.991
2020-01
20002
Houston
TX
0.134
2020-02
20002
Houston
TX
0.234
2020-03
20002
Houston
TX
0.667
...
...
...
...
...
2021-07
10001
Los Angeles
CA
0.678
2021-07
20002
Houston
TX
0.721
我有多个城市,每个城市都包含一个 Ranking
,范围从 2020-01
到 2021-07
。我想创建一个新的数据框,我在其中取每个城市随时间排名的平均值。本质上,我的新数据集将是:
Code
Average Ranking
10001
0.8665
20002
0.439
我不知道如何提取我的信息。我最想做的事情仍然没有给我正确的输出:
df_avg = df.groupby(['Code','Date'],as_index=False)['Ranking'].mean().rename(columns={'Ranking':'Avg_Ranking'})
我如何创建这个新的数据框 df_avg
,它有两列,Code
和 Average Ranking
,其中 Average Ranking
是平均值 Ranking
每个 Code
?
只需从您的 groupby 键中删除 Date
。在这种情况下,您需要每个 Code
列中所有行的列 Ranking
的平均值,因此您的 groupby 键应该仅为 Code
.
df_avg = df.groupby(['Code'],as_index=False)['Ranking'].mean().rename(columns={'Ranking':'Avg_Ranking'})
我有一个数据集,df
如下所示:
Date | Code | City | State | Ranking |
---|---|---|---|---|
2020-01 | 10001 | Los Angeles | CA | 0.852 |
2020-02 | 10001 | Los Angeles | CA | 0.945 |
2020-03 | 10001 | Los Angeles | CA | 0.991 |
2020-01 | 20002 | Houston | TX | 0.134 |
2020-02 | 20002 | Houston | TX | 0.234 |
2020-03 | 20002 | Houston | TX | 0.667 |
... | ... | ... | ... | ... |
2021-07 | 10001 | Los Angeles | CA | 0.678 |
2021-07 | 20002 | Houston | TX | 0.721 |
我有多个城市,每个城市都包含一个 Ranking
,范围从 2020-01
到 2021-07
。我想创建一个新的数据框,我在其中取每个城市随时间排名的平均值。本质上,我的新数据集将是:
Code | Average Ranking |
---|---|
10001 | 0.8665 |
20002 | 0.439 |
我不知道如何提取我的信息。我最想做的事情仍然没有给我正确的输出:
df_avg = df.groupby(['Code','Date'],as_index=False)['Ranking'].mean().rename(columns={'Ranking':'Avg_Ranking'})
我如何创建这个新的数据框 df_avg
,它有两列,Code
和 Average Ranking
,其中 Average Ranking
是平均值 Ranking
每个 Code
?
只需从您的 groupby 键中删除 Date
。在这种情况下,您需要每个 Code
列中所有行的列 Ranking
的平均值,因此您的 groupby 键应该仅为 Code
.
df_avg = df.groupby(['Code'],as_index=False)['Ranking'].mean().rename(columns={'Ranking':'Avg_Ranking'})