1

Currently I have two dataframes. One with a few filled columns including Names and a bunch of empty columns. The other dataframe has all the empty columns of the first filled. I'm trying to populate the empty columns of the first dataframe with the data in the second dataframe only if the dataframes share a cell value.

Example:

DB:

Amount  Foil?   Name                 Set           ....
3       nan     purify the grave     innistrad
2       nan     slayer of the wicked innistrad
1       nan     doomed traveler      innistrad
1       nan     fiend hunter         innistrad

DF:

eur     name                    rarity   tix    usd     set_name   ....
0.21    Ballyrush Banneret      common   0.02   0.17    Morningtide
0.34    Battletide Alchemist    rare     0.01   0.88    Morningtide
0.05    Burrenton Bombardier    common   0.01   0.03    Morningtide
0.03    Burrenton Shield-Bearer common   0.01   0.03    Morningtide
0.21    Cenn's Tactician        uncommon 0.01   0.22    Morningtide
0.05    Changeling Sentinel     common   0.01   0.08    Morningtide
0.04    Coordinated Barrage     common   0.01   0.11    Morningtide
0.06    Daily Regimen           uncommon 0.01   0.14    Morningtide

Now somewhere in DF there should be a row with a matching name and set cell as in db (db has only the cards I have while df has all the cards from all the sets I have). If so I want to be able to update the row in DB with all the info in DF. How should I go about doing this?

The wanted end behavior is

DB:

Amount      Foil?   Name                 Set            usd     ....
    3       nan     purify the grave     innistrad      .5
    2       nan     slayer of the wicked innistrad      .7 
    1       nan     doomed traveler      innistrad      .9
    1       nan     fiend hunter         innistrad      ...

What I've tried so far is

final_db = pd.concat([db, df.loc[df['name'].isin(db['Name'])]],ignore_index=True,sort=True)

where my thinking was that it would concatenate (while ignoring index) DB and a new database with the same length of DB but made up of only rows that DF has. This did not work. I'm unsure what to do from here.


As an added bonus I would really like to be able to do this with a semi fuzzy search in case they're misspellings in the name.

MilesConn
  • 301
  • 2
  • 13

0 Answers0