首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并多列上的两个DataFrames

合并多列上的两个DataFrames
EN

Stack Overflow用户
提问于 2018-01-05 10:41:54
回答 1查看 2.5K关注 0票数 2

希望你能帮我。

我有两个很大的数据集。DF1示例:

代码语言:javascript
复制
|id| A_Workflow_Type_ID | B_Workflow_Type_ID | ...
 1   123                  456
 2   789                  222                  ...
 3   333                  NULL                 ...

DF2示例:

代码语言:javascript
复制
Workflow| Operation | Profile |    Type     | Name | ...
123           1          2       Low_Cost     xyz    ...
456           2          5       High_Cost    z      ...

我需要合并这两个数据集,而不需要创建许多NaNs和多列。因此,我合并了A_Workflow_Type_ID和B_Workflow_Type_ID的信息,这些信息来自于来自DF2的DF1 on Workflow。我在熊猫上尝试了几次连接操作,合并选项失败了。

我最后一次尝试:

代码语言:javascript
复制
all_Data = pd.merge(left=DF1,right=DF2, how='inner', left_on =['A_Workflow_Type_ID ','B_Workflow_Type_ID '], right_on=['Workflow'])

但这反映出一个错误,即双方都必须平等对待。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 11:10:53

你需要先由melt重塑,然后再由merge重塑

代码语言:javascript
复制
#generate all column without strings Workflow
cols = DF1.columns[~DF1.columns.str.contains('Workflow')]
print (cols)
Index(['id'], dtype='object')

df = DF1.melt(cols, value_name='Workflow', var_name='type')
print (df)
   id                type  Workflow
0   1  A_Workflow_Type_ID     123.0
1   2  A_Workflow_Type_ID     789.0
2   3  A_Workflow_Type_ID     333.0
3   1  B_Workflow_Type_ID     456.0
4   2  B_Workflow_Type_ID     222.0
5   3  B_Workflow_Type_ID       NaN

all_Data = pd.merge(left=df,right=DF2,  on ='Workflow')
print (all_Data)
   id                type Workflow  Operation  Profile       Type Name
0   1  A_Workflow_Type_ID      123          1        2   Low_Cost  xyz
1   1  B_Workflow_Type_ID      456          2        5  High_Cost    z
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48111889

复制
相关文章

相似问题

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