将两列分组在一起的新数据框

时间:2018-11-21 13:03:09

标签: python pandas pandas-groupby sklearn-pandas

我有一个如下所示的数据集。

Region_Name  Date     Average
London       1990Q1   105
London       1990Q1   118
...          ...      ...
London       2018Q1   157

我将日期转换为四分之一,并希望创建一个新的数据框,将匹配的四分之一和区域名称分组在一起,并给出平均值。 完成这项任务的最佳方法是什么?

我一直在查看groupby函数,但一直在追溯。 例如:

new_df = df.groupby(['Resion_Name','Date']).mean()

1 个答案:

答案 0 :(得分:1)

dict3={'Region_Name': ['London','Newyork','London','Newyork','London','London','Newyork','Newyork','Newyork','Newyork','London'],
'Date' : ['1990Q1','1990Q1','1990Q2','1990Q2','1991Q1','1991Q1','1991Q2','1992Q2','1993Q1','1993Q1','1994Q1'],
'Average': [34,56,45,67,23,89,12,45,67,34,67]}


df3=pd.DataFrame(dict3)

**现在我的df3如下**

    Region_Name Date    Average

0   London  1990Q1  34


1   Newyork 1990Q1  56

2   London  1990Q2  45

3   Newyork 1990Q2  67

4   London  1991Q1  23

5   London  1991Q1  89

6   Newyork 1991Q2  12

7   Newyork 1992Q2  45

8   Newyork 1993Q1  67

9   Newyork 1993Q1  34

10  London  1994Q1  67

代码如下:

new_df = df3.groupby(['Region_Name','Date'])

new1=new_df['Average'].transform('mean')

数据帧new1的结果:

print(new1)


0     34.0

1     56.0

2     45.0

3     67.0

4     56.0

5     56.0

6     12.0

7     45.0

8     50.5

9     50.5

10    67.0
相关问题