2015-09-18 126 views
0

我有2个数据帧: 在每个数据帧中,我有具有相同名称和值(Key_Merge1)的列,并且在每个数据帧中,我有2个不同的列名, Key_Merge2)。我怎样才能由2列合并2个数据帧: 1.大熊猫合并2个数据帧,每个2列

DF1密钥Merge1 2.密钥Merge21(DF1)和Key Merge22(DF2)

PRODUCT PARAMETER_NAME PARAMETER VALUE1 PARAMETER_VALUE2 PARAMETER_VALUE_3 
AAA PARAM1 10 10 10 
AAA PARAM2 11 11 11 
BBB PARAM1 12 12 12 
BBB PARAM2 12 12 12 

DF2

PRODUCT_GROUP PARAMETER_NAME Limit1 Limit2 Limit3 
AAA PARAM1 22 24 26 
AAA PARAM2 32 34 36 
BBB PARAM1 42 44 46 
BBB PARAM2 52 54 56 

DF1 + DF2

PRODUCT PARAMETER_NAME PARAMETER VALUE1 PARAMETER_VALUE2 PARAMETER_VALUE_3 Limit1 Limit2 Limit3 
AAA PARAM1 10 10 10 22 24 26 
AAA PARAM2 11 11 11 32 34 36 
BBB PARAM1 12 12 12 42 44 46 
BBB PARAM2 12 12 12 52 54 56 

谢谢

+0

你可以发布一个示例数据和DF,你的文本描述不够清楚,但一般你想合并,并通过cols列表合并; hs和rhs上:'pd.merge(df1,df2,left_on = [' Key_Merge1','Key_Merge21'],right_on = ['Key_Merge1','Key_merge22'])' – EdChum

+0

感谢哟很多EdChum: – Felix

+0

你是说我的代码段工作吗? – EdChum

回答

0

OK,你必须以重命名DF2“PRODUCT_GROUP”为merge工作:

In [34]: 
pd.merge(df1, df2.rename(columns={'PRODUCT_GROUP':'PRODUCT'})) 

Out[34]: 
    PRODUCT PARAMETER_NAME PARAMETER VALUE1 PARAMETER_VALUE2 \ 
0  AAA   PARAM1    10    10 
1  AAA   PARAM2    11    11 
2  BBB   PARAM1    12    12 
3  BBB   PARAM2    12    12 

    PARAMETER_VALUE_3 Limit1 Limit2 Limit3 
0     10  22  24  26 
1     11  32  34  36 
2     12  42  44  46 
3     12  52  54  56 

合并自然会找到相匹配的两列,并根据需要进行内部合并