Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas: Concat two dataframes on matching columns, keep non-matching columns and fill blanks with NaN [duplicate]

Tags:

python

pandas

I have two dataframes like:

d = {'CD': ['LO6000', 'TBLITIE', 'UUUU'], 'REGN': ['Colorado', 'Colorado', 'Colorado'], 'rev_1': [1179.49, 2110.00, 23.54]}
df = pd.DataFrame(data=d)


        CD      REGN    rev_1
0   LO6000  Colorado  1179.49
1  TBLITIE  Colorado  2110.00
2     UUUU  Colorado    23.54

and

d = {'CD': ['LO6000', 'TBLITIE'], 'REGN': ['Colorado', 'Colorado'], 'rev_2': [356, 9503]}
df = pd.DataFrame(data=d)

        CD      REGN  rev_2
0   LO6000  Colorado    356
1  TBLITIE  Colorado   9503

And would like to match them on the CD and REGN columns to get a dataframe like so:

d = {'CD': ['LO6000', 'TBLITIE', 'UUUU'], 'REGN': ['Colorado', 'Colorado', 'Colorado'], 'rev_1': [1179.49, 2110.00, 23.54], 'rev_2': [356.00, 9503.00, 'nan']}
df = pd.DataFrame(data=d)


        CD      REGN    rev_1    rev_2
0   LO6000  Colorado  1179.49   356.00
1  TBLITIE  Colorado  2110.00  9503.00
2     UUUU  Colorado    23.54   nan
like image 437
sanjayr Avatar asked Dec 14 '25 04:12

sanjayr


1 Answers

if

d1 = {'CD': ['LO6000', 'TBLITIE', 'UUUU'], 'REGN': ['Colorado', 'Colorado', 'Colorado'], 'rev_1': [1179.49, 2110.00, 23.54]}
df1 = pd.DataFrame(data=d1)


d2 = {'CD': ['LO6000', 'TBLITIE'], 'REGN': ['Colorado', 'Colorado'], 'rev_2': [356, 9503]}
df2 = pd.DataFrame(data=d2)

then

df = pd.merge(left=df1, right=df2, how="left", on=["CD", "REGN"])

output:

        CD      REGN    rev_1   rev_2
0   LO6000  Colorado  1179.49   356.0
1  TBLITIE  Colorado  2110.00  9503.0
2     UUUU  Colorado    23.54     NaN
like image 158
anon01 Avatar answered Dec 16 '25 21:12

anon01



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!