首页 > 解决方案 > 如果它们共享单元格值,如何连接数据框

问题描述

目前我有两个数据框。一个有几列填充的列Names,包括一堆空列。另一个数据框具有第一个填充的所有空列。只有当数据帧共享一个单元格值时,我才尝试用第二个数据帧中的数据填充第一个数据帧的空列。

例子:

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

现在某处DF应该有一行匹配nameset单元格,如dbdb只有我拥有的卡片,而df拥有我拥有的所有系列的所有卡片)。如果是这样,我希望能够DB使用DF. 我该怎么做呢?

想要的最终行为是

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      ...

到目前为止我尝试过的是

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

我的想法是它将连接(同时忽略indexDB和一个具有相同长度DB但仅由具有的行组成的新数据库DF。这没有用。我不确定从这里做什么。


作为额外的奖励,我真的希望能够通过半模糊搜索来做到这一点,以防它们在名称中拼写错误。

标签: pythonpandasdataframe

解决方案


推荐阅读