python - 将一列合并到多列
问题描述
我有以下两个数据框DF1:
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:
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 次,效率低下:
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 中的每个疫苗列,而无需一次又一次地编写相同的合并函数?
解决方案
推荐阅读
- javascript - 如何解决android studio中的致命异常错误
- c# - 在项目之外使用 Visual Studio 打开 c# 文件没有任何建议
- javascript - 在 Vuetify 2.x v-data-table 中使用选项对象
- flutter - 在 Flutter with Bloc 中的 onDismissable 事件中的 Toogle 收藏夹
- reactjs - 饼图重新图表没有响应
- javascript - 在渲染组件之前运行 useEffect 钩子
- javascript - Oracle APEX:如何在交互式网格中获取开关列的新值(动态操作 - JavaScript)?
- amazon-web-services - 将 AWS 托管区域连接到注册域
- python - 使用 Tkinter 动态添加元素
- javascript - 使用未处理的拒绝 (RangeError) 反应功能性应用程序:超出最大调用堆栈大小