2017-10-30 22 views
0

私は問題を解決するために論理的な問題があります。私は2つのデータフレームを持っています。パンダで2つのデータフレームを結合

Dataframe_oneには、次の列います

[Id, workflowprofile_A, workflow_profile_B, important_string_info ] 

Dataframe_twoは、次の列があります

[workflowprofile, option, workflow] 

私の問題は、Dataframe_twoからworkflowprofileはworkflowprofile_A ORなるとAND Dataframe_oneからworkflow_profile_Bことができるということです。どのようにして列がこれらのように見えるかを結合したデータフレームを得ることができます。

dataframe_three:あなたは、常に一つの値がNaNあるので、fillnaまたはcombine_firstて新しい列を作成し、このコラムでマージすることができ

[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] 

答えて

2

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') 

サンプル:

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 
+1

これは役立ちます。ありがとう! – sataide

関連する問題