Vlookup在2个指定的列中

时间:2016-04-30 12:36:39

标签: python pandas vlookup

我有一个包含2列的hc数据框,名为“Previous Cost Center”& “当前成本中心”并且想要添加两个名为“上一个/当前分组”的新列,其应该基于具有两个名为“CostCenter”&的列的映射表来填充成本中心的分组。分组。

在excel中,我只是应用vlookup根据每个相应列中的成本中心填充字段,并将其映射到映射表。

我一直在玩合并功能,但我无法让它工作。

如何将基于指定列的数据框合并到指定的列中?

HC列表:

    ID Cost Center Previous Cost Center Curent
0    1                    A                NaN
1    2                    B                  C
2    3                  NaN                NaN
3    4                    D                  D
4    5                    F                  F
5    6                  NaN                  A
6    7                    A                  B
7    8                  NaN                  B
8    9                    A                  C
9   10                    B                  D
10  11                    D                  F
11  12                    C                NaN

映射:

成本中心分组

0           A     XERX
1           B       ID
2           C     BLOC
3           D     KLRO
4           E      PPP
5           F      SDF
6           G        D

输出:

    ID Cost Center Previous Grouping Previous Cost Center Current Grouping Current
0    1                    A              XERX                 NaN              NaN
1    2                    B                ID                   C             BLOC
2    3                  NaN               NaN                 NaN              NaN
3    4                    D              KLRO                   D             KLRO
4    5                    F               SDF                   F              SDF
5    6                  NaN               NaN                   A             XERX
6    7                    A              XERX                   B               ID
7    8                  NaN               NaN                   B               ID
8    9                    A              XERX                   C             BLOC
9   10                    B                ID                   D             KLRO
10  11                    D              KLRO                   F              SDF
11  12                    C              BLOC                 NaN              NaN

1 个答案:

答案 0 :(得分:0)

假设HCgroupingDataFrame s

解决方案

grouping = grouping.set_index('Cost Center')
HC['Grouping Current'] = HC['Cost Center Current'].apply(lambda x: grouping.ix[x])
HC['Grouping Previous'] = HC['Cost Center Previous'].apply(lambda x: grouping.ix[x])