我在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的底部,这不是我需要的。我做错了什么?
答案 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