sataide
sataide

Reputation: 113

Merge two dataframes in pandas

i have a logical problem to solve an issue. I have two dataframes.

Dataframe_one have the following columns:

[Id, workflowprofile_A, workflow_profile_B, important_string_info ]

Dataframe_two have the following columns:

[workflowprofile, option, workflow]

My Problem is that workflowprofile from Dataframe_two can be a workflowprofile_A OR and AND a workflow_profile_B from Dataframe_one. How can i get a merged dataframe where the columns would look like these.

dataframe_three:

[Id, workflowprofile_A,workflowprofile_fromA, option_fromA, workflow_fromA,important_string_info_fromA  workflow_profile_B, workflowprofile_fromB, option_fromB, workflow_fromB, important_string_info_fromB]

Upvotes: 0

Views: 67

Answers (1)

jezrael
jezrael

Reputation: 863611

You can create new column by fillna or combine_first, because always one value is NaN and then merge by this column:

df1['workflowprofile'] = df1['workflowprofile_A'].fillna(df1['workflow_profile_B'])
#alternative
#df1['workflowprofile'] = df1['workflowprofile_A'].combine_first(df1['workflow_profile_B'])

df3 = pd.merge(df1, df2, on='workflowprofile')

Sample:

print (df1)
   Id  workflowprofile_A  workflow_profile_B  important_string_info
0   1                7.0                 NaN                      8
1   2                NaN                 5.0                      1    

print (df2)
   workflowprofile  option  workflow
0                7       0         0
1                5       9         0
2                7       0         0
3                4       1         2

df1['workflowprofile'] = df1['workflowprofile_A'].fillna(df1['workflow_profile_B'])
df3 = pd.merge(df1, df2, on='workflowprofile')
print (df3)
   Id  workflowprofile_A  workflow_profile_B  important_string_info  \
0   1                7.0                 NaN                      8   
1   1                7.0                 NaN                      8   
2   2                NaN                 5.0                      1   

  workflowprofile  option  workflow  
0               7       0         0  
1               7       0         0  
2               5       9         0  

Upvotes: 2

Related Questions