熊猫:如何合并不同年份的两个数据框?

时间:2018-07-07 13:52:01

标签: python pandas dataframe merge

我有两个数据帧df1df2

df1包含人们的信息,他们的收入方式以及ID码。

df1 = pd.DataFrame({'Money' : [359,45,780,77,93,257],
                   'NAME' : ['A', 'B', 'C', 'D', 'E', 'F'],
                   'ID' : ['0', '1', '2', '3', '4','5']})

df2中,我们对不同年份的每个ID进行了分类,例如,如下所示:

    C   ID  Year
0   1   0   2015
1   2   0   2016
2   3   0   2017
3   1   1   2016
4   1   1   2017
5   3   2   2017
6   3   3   2015
7   1   3   2017
8   1   4   2015
9   3   5   2016
10  2   5   2017

其中C是分类。我想合并两个数据框,以便具有如下所示的数据框

df3

    ID  Money   NAME   2015  2016  2017
0   0   359      A       1    2     3
1   1   45       B      NaN   1     1
2   2   780      C      NaN  NaN    2
3   3   77       D       2   NaN    1   
4   4   93       E       1   NaN   NaN  
5   5   257      F      NaN   3     2

1 个答案:

答案 0 :(得分:2)

首先,创建年份列:

c = df2.set_index(['ID', 'Year']).unstack('Year').C

那给你:

Year 2015 2016 2017
ID                 
0     1.0  2.0  3.0
1     NaN  1.0  1.0
2     NaN  NaN  3.0
3     3.0  NaN  1.0
4     1.0  NaN  NaN
5     NaN  3.0  2.0

然后df1.join(c, 'ID')

   Money NAME ID  2015  2016  2017
0    359    A  0   1.0   2.0   3.0
1     45    B  1   NaN   1.0   1.0
2    780    C  2   NaN   NaN   3.0
3     77    D  3   3.0   NaN   1.0
4     93    E  4   1.0   NaN   NaN
5    257    F  5   NaN   3.0   2.0