将两张Excel合并成一张

时间:2019-07-04 18:27:58

标签: excel python-3.x pandas

我正在尝试使用python脚本从excel.xlsx合并2张纸。我想当sheet1('CLASS')与sheet2('C_MAP')匹配时,在工作表1或新工作表中的CLASS之后合并DSC和ASC。

为澄清这一点,我附上了我的Excel工作表。

这是我的Sheet1:

  P_MAP  Q_GROUP    CLASS
0   ram        2     pink
1              4   silver
2  sham        5    green
3              0  default
4   nil        2     pink

它包含P_MAP,Q_GROUP,CLASS

这是我的Sheet2:

    C_MAP DSC    ASC
0    pink  h1  match
1   green  h2  match
2  silver  h3  match

它包含C_MAP,ASC,DSC

所以,我希望当CLASS匹配C_MAP时,应该添加ASC和DSC,如果不匹配,则添加NA。

我想要的输出将是这样的:

  P_MAP  Q_GROUP    CLASS DSC    ASC
0   ram        2     pink  h1  match
1              4   silver  h3  match
2  sham        5    green  h2  match
3              0  default   0     NA
4   nil        2     pink  h1  match

1 个答案:

答案 0 :(得分:1)

您想要的是pd.merge

df1 = pd.read_excel('filename.xlsx', sheet_name='Sheet1') # fill in the correct excel filename
df2 = pd.read_excel('filename.xlsx', sheet_name='Sheet2') # fill in the correct excel filename

df_final = df1.merge(df2, 
                     left_on='CLASS', 
                     right_on='C_MAP', 
                     how='left').drop('C_MAP', axis=1)

df_final.to_excel('filename2.xlsx')

输出

  P_MAP  Q_GROUP    CLASS  DSC    ASC
0   ram        2     pink   h1  match
1              4   silver   h3  match
2  sham        5    green   h2  match
3              0  default  NaN    NaN
4   nil        2     pink   h1  match