首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一列合并为多列

将一列合并为多列
EN

Stack Overflow用户
提问于 2021-05-15 09:20:06
回答 1查看 32关注 0票数 0

我有两个数据处理程序,DF1:

代码语言:javascript
复制
   location     vaccine1            vaccine2          vaccine3           vaccine4
0   Afghanistan Oxford/AstraZeneca  Pfizer/BioNTech   Sinopharm/Beijing  None
1   Albania     Oxford/AstraZeneca  Pfizer/BioNTech   Sinovac            Sputnik V
2   Algeria     Sputnik V           None              None               None
3   Andorra     Oxford/AstraZeneca  Pfizer/BioNTech   None               None

DF2:

代码语言:javascript
复制
    Vaccine             Efficacy
0   Oxford/AstraZeneca  0.70
1   Pfizer/BioNTech     0.95
2   Sinopharm/Beijing   0.79
3   Sinovac             0.50
4   Sputnik V           0.92

我知道您可以像下面这样合并,但是这个过程重复了4次,效率很低:

代码语言:javascript
复制
v1 = pd.merge(df1, vacc_eff, how='left', left_on='vaccine1', right_on='Vaccine')[['location', 'Efficacy']]
v2 = pd.merge(df1, vacc_eff, how='left', left_on='vaccine2', right_on='Vaccine')[['location', 'Efficacy']]

vmerged = pd.merge(v1,v2,on=['location'])

如何将DF2列“有效性”合并到DF1中的每个疫苗列中,而不必一次又一次地写入相同的合并函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 09:31:51

下面是一个您可以尝试的解决方案, + 然后是

代码语言:javascript
复制
map_ = vacc_eff.set_index('Vaccine')['Efficacy'].to_dict()

print(
    df1[['location', 'vaccine1', 'vaccine2']].set_index('location')
        .stack().map(map_).unstack()
)

代码语言:javascript
复制
             vaccine1  vaccine2
location                       
Afghanistan      0.70      0.95
Albania          0.70      0.95
Algeria          0.92       NaN
Andorra          0.70      0.95
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67545162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档