Merge Two Data Frames On Multiple Values
I have two data frames which look like this df1 name ID abb 0 foo 251803 I 1 bar 376811 R 2 baz 174254 Q 3
Solution 1:
Use join
:
print (df1)
name ID abb
0 foo 251803 I
1 bar 376811 R
2 baz 174254 Q
3 foofoo 337144 IRQ
4 barbar 306521 IQ
#each character to df, which is stacked to Series
s = df1.abb.apply(lambda x: pd.Series(list(x)))
.stack()
.reset_index(drop=True, level=1)
.rename('abb')
print (s)
0 I
1 R
2 Q
3 I
3 R
3 Q
4 I
4 Q
Name: abb, dtype: object
df1 = df1.drop('abb', axis=1).join(s)
print (df1)
name ID abb
0 foo 251803 I
1 bar 376811 R
2 baz 174254 Q
3 foofoo 337144 I
3 foofoo 337144 R
3 foofoo 337144 Q
4 barbar 306521 I
4 barbar 306521 Q
Solution 2:
See this answer for various ways to explode on a column
rows= []
for i, rowin df1.iterrows():
for a in row.abb:
rows.append([row['ID'], a, row['name']])
df11 = pd.DataFrame(rows, columns=df1.columns)
df11.merge(df2)
Post a Comment for "Merge Two Data Frames On Multiple Values"