Reputation: 575
supposed my dataframe
df1
name startdate label
A 14-05-07 1
A 14-05-21 2
A 14-06-01 3
A 14-06-15 4
B 18-10-05 1
B 18-10-19 2
B 18-10-31 3
C 19-03-04 1
C 19-03-17 2
C 19-03-31 3
D 16-04-01 1
D 16-04-21 2
..
df2
name date
A 14-04-05
A 14-05-08
A 15-01-05
B 18-07-05
B 18-10-02
C 19-01-03
C 19-03-30
D 16-04-01
..
There are two data frames df1 and df2 have the same common key 'name'
I want to add the 'startdate' labeled df1 to the column of df2.
output what I want
name date label1 label2 label3 label4 ..
A 14-04-05 14-05-07 14-05-21 14-06-01 14-06-15
A 14-05-08 14-05-07 14-05-21 14-06-01 14-06-15
A 15-01-05 14-05-07 14-05-21 14-06-01 14-06-15
B 18-07-05 18-10-05 18-10-19 18-10-31 nan
B 18-10-02 18-10-05 18-10-19 18-10-31 nan
C 19-01-03 19-03-04 19-03-17 19-03-31 nan
C 19-03-30 19-03-04 19-03-17 19-03-31 nan
D 16-04-01 16-04-01 16-04-21 nan nan
Is there way? thank you for reading.
Upvotes: 1
Views: 32
Reputation: 863281
Use DataFrame.join
with DataFrame.pivot
and DataFrame.add_prefix
:
df = df2.join(df1.pivot('name','label','startdate').add_prefix('label'), on='name')
print (df)
name date label1 label2 label3 label4
0 A 14-04-05 14-05-07 14-05-21 14-06-01 14-06-15
1 A 14-05-08 14-05-07 14-05-21 14-06-01 14-06-15
2 A 15-01-05 14-05-07 14-05-21 14-06-01 14-06-15
3 B 18-07-05 18-10-05 18-10-19 18-10-31 NaN
4 B 18-10-02 18-10-05 18-10-19 18-10-31 NaN
5 C 19-01-03 19-03-04 19-03-17 19-03-31 NaN
6 C 19-03-30 19-03-04 19-03-17 19-03-31 NaN
7 D 16-04-01 16-04-01 16-04-21 NaN NaN
Upvotes: 1