Python 使用Pandas,如何基于“中的一列组合多个工作表?”;母版纸;?
我在Excel表格中有9个不同的选项卡,每个选项卡都有不同的信息。在选项卡1(被认为是“主选项卡”)上,我有最完整的数据集,但我需要根据与主选项卡中特定列的匹配情况,从选项卡2-9添加一列信息Python 使用Pandas,如何基于“中的一列组合多个工作表?”;母版纸;?,python,pandas,Python,Pandas,我在Excel表格中有9个不同的选项卡,每个选项卡都有不同的信息。在选项卡1(被认为是“主选项卡”)上,我有最完整的数据集,但我需要根据与主选项卡中特定列的匹配情况,从选项卡2-9添加一列信息 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=
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
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
表2-9可能有相同的客户,他们可能有更多,他们可能有更少
示例表2:
Name FavoriteColor ClientID Metric Value
Jodi Green foo 16
Kati Purple trick 29
Sam Blue bar 32
最后一张图纸应如下所示:
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
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
我在这里查看了一些资源:
但似乎一切都没有按我预期的方式进行。我现在得到的代码只是将df2添加到MasterTab的底部,这不是我需要的。我做错了什么?试试这个
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
基本上,您只需要将“MetricValue”列添加到主数据中?如果将
.reset_index(drop=True)
添加到df1=df.parse
和df2=df.parse
行的末尾,会有帮助吗?你确定“ClientID”在df1和df2中的拼写完全相同吗?是的@MaxPower,拼写完全相同,没有空格问题或其他问题。@user3043636,没错,但必须匹配。例如,我不能使用foo bar baz 29。我要为Tab3更改什么值?哪列是Tab3?好的,假设Tab3是另一个数据帧,您可以在要合并的id上设置该df的索引(在本例中为ClientID),然后.MetricValue使用您需要其值的列。我有以下内容:df1['Metric']=df1.ClientID.map(df2.set_index('ClientID').Metric\u Value)。fillna(0)AttributeError:'DataFrame'对象没有属性'Metric\u Value',然后使用set\u索引('ClientID')['Metric Value']