我有两个数据帧df1
和df2
。
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
答案 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