希望你能帮我。
我有两个很大的数据集。DF1示例:
|id| A_Workflow_Type_ID | B_Workflow_Type_ID | ...
1 123 456
2 789 222 ...
3 333 NULL ...DF2示例:
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。我在熊猫上尝试了几次连接操作,合并选项失败了。
我最后一次尝试:
all_Data = pd.merge(left=DF1,right=DF2, how='inner', left_on =['A_Workflow_Type_ID ','B_Workflow_Type_ID '], right_on=['Workflow'])但这反映出一个错误,即双方都必须平等对待。
谢谢你的帮助!
发布于 2018-01-05 11:10:53
你需要先由melt重塑,然后再由merge重塑
#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 zhttps://stackoverflow.com/questions/48111889
复制相似问题