Pandas绘制了一张清单?

2024-09-28 01:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个列表的dict,并且如果其中一个列表值匹配,我想将列中的值映射/替换到每个项的键,我该如何做

例如:

   MappingDict = {
      'argenx SE': ['argenx SE',
      'Argenx SE',
      'ARGENX SE',
      'ARGENX SE NV',
      'ARGENX SE COMMON STOCK',
      'ARGENX SE ARGX',
      'argenx SE ADR'],

     'Arête Industries, Inc': [],

     'Ares Management Corporation': ['Ares Management Corporation',
      'Ares Management Corporation 7 % Non-Cum Pfd Registered Shs Series A'],

     'Alexandria Real Estate Equities, Inc': ['Alexandria Real Estate Equities, Inc',
      'Alexandria Real Estate Equities Inc 3.45 04/30/2025',
      'Alexandria Real Estate Equities Inc-3.45%-4-30-2025']
    }

我有这样的数据框

df['Name']:
Name     
Alexandria Real Estate Equities Inc 3.45 04/30/2025
ARGENX SE NV
Arête Industries, Inc

我希望结果是:

df['Name']:
Name     
Alexandria Real Estate Equities, Inc
argenx SE
Arête Industries, Inc

基本上,如果值列表中的项匹配,那么它应该用键替换列的值。如果键的值为空,则该值应保持原样。我尝试过替换和映射来实现这一点,但它们似乎不是设计用来处理列表的。我能做些什么来让它工作


Tags: name列表realmanagementincarteares
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:57

让我们试试explode然后replace

s = pd.Series(MappingDict).explode()
df['name_new'] = df.Name.replace(dict(zip(s,s.index)))
df
                                                Name                              name_new
0  Alexandria Real Estate Equities Inc 3.45 04/30...  Alexandria Real Estate Equities, Inc
1                                       ARGENX SE NV                             argenx SE
2                              Arête Industries, Inc                 Arête Industries, Inc

相关问题 更多 >

    热门问题