使用Pandas,如何基于“主表”中的一列组合多个工作表?

时间:2017-04-12 17:27:24

标签: python pandas

我在Excel工作表中有9个不同的选项卡,每个选项卡都有不同的信息。在选项卡1(被认为是“主选项卡”)上,我拥有最完整的数据集,但我需要在选项卡2-9中添加一列信息,基于匹配MasterTab中的特定列。

import pandas as pd
df = pd.ExcelFile('AprilTest.xlsx')
df1 = df.parse('MasterTab')
df2 = df.parse('Tab2')


check=pd.merge(df1, df2, on='ClientID', how='left') 

MasterTab看起来像这样:

ClientID    val1    val2    val3
foo         bar     baz     12/2/16
cat         dog     pan     1/12/16
zzz         yyy     vvv     6/8/16
trick       lol     hmm     4/28/17

Tab2-9可能有相同的clientID,它们可能有更多,它们可能有更少。

示例Tab2:

Name   FavoriteColor   ClientID   Metric Value
Jodi   Green           foo        16
Kati   Purple          trick      29
Sam    Blue            bar        32

最终表格应如下所示:

ClientID    val1    val2    val3    Metric Value
foo         bar     baz     12/2/16  16
cat         dog     pan     1/12/16  0
zzz         yyy     vvv     6/8/16   0
trick       lol     hmm     4/28/17  29

我在这里查看了一些资源: pandas Combine Excel Spreadsheets https://chrisalbon.com/python/pandas_join_merge_dataframe.html

但似乎没有任何东西像我期望的那样工作。我现在得到的代码只是将df2添加到MasterTab的底部,这不是我需要的。我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个

df1['Metric'] = df1.ClientID.map(df2.set_index('ClientID').MetricValue).fillna(0)

DF1

你得到了

    ClientID    val1    val2    val3    Metric
0   foo         bar     baz     12/2/16 16.0
1   cat         dog     pan     1/12/16 0.0
2   zzz         yyy     vvv     6/8/16  0.0
3   trick       lol     hmm     4/28/17 29.0