基于潜在不同的连接键合并Pandas Dataframe

egdjgwm8  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个 Dataframe A,其中的列如下所示:
| 帐户名称|SFDC帐户名称|公司名称|
| - -|- -|- -|
| 阿克梅公司|Acme公司|阿克梅|
| 甜甜圈天堂|无|甜甜圈天堂|
| 超级食品|苏珀食品|无|
我想要合并其他数据行,但不确定此其他数据是使用ACCOUNT_NAMESFDC_ACCOUNT_NAMECOMPANY_NAME撷取的。此数据如下表所示。有一个链接索引键数据行可以代表ACCOUNT_NAMESFDC_ACCOUNT_NAMECOMPANY_NAME
| 捕获公司名称|值1|值2|
| - -|- -|- -|
| 阿克梅公司|2个|三个|
| 苏珀食品|六个|七个|
| 甜甜圈天堂|五个|八个|
我希望决赛桌看起来像这样:
| 帐户名称|SFDC帐户名称|公司名称|值1|值2|
| - -|- -|- -|- -|- -|
| 阿克梅公司|Acme公司|阿克梅|2个|三个|
| 甜甜圈天堂|无|甜甜圈天堂|五个|八个|
| 超级食品|苏珀食品|无|六个|七个|
我可以将第二个数据集合并到前三次(每个连接键合并一次),但是列value1value2当然会重复三次。

vu8f3i0k

vu8f3i0k1#

给定:

# df

   ACCOUNT_NAME SFDC_ACCOUNT_NAME     COMPANY_NAME
0      Acme Inc        Acme, Inc.             Acme
1  Donut Heaven               NaN  Doughnut Heaven
2   Super Foods      Sooper Foods              NaN

# df1

  CAPTURED_COMPANY_NAME  value1  value2
0              Acme Inc       2       3
1          Sooper Foods       6       7
2       Doughnut Heaven       5       8

正在执行:

# Merge each individually, and concat the results:
out = pd.concat([df.merge(df1, left_on=x, right_on='CAPTURED_COMPANY_NAME') for x in df.columns], ignore_index=True)
# Left Merge:
# out = df.merge(pd.concat([df.merge(df1, left_on=x, right_on='CAPTURED_COMPANY_NAME') for x in df.columns], ignore_index=True), how='left')
print(out)

输出量:

ACCOUNT_NAME SFDC_ACCOUNT_NAME     COMPANY_NAME CAPTURED_COMPANY_NAME  value1  value2
0      Acme Inc        Acme, Inc.             Acme              Acme Inc       2       3
1   Super Foods      Sooper Foods              NaN          Sooper Foods       6       7
2  Donut Heaven               NaN  Doughnut Heaven       Doughnut Heaven       5       8

相关问题