一列与另外两列的映射

时间:2013-11-19 05:20:36

标签: python pandas

我有一个Pandas Dataframe,其中有三列遵循这种结构:

Employee        email              Manager 
Smith       asmith@example.com     Johnson          
Doe         jdoe@example.com       Smith           
Johnson     jjohnson@example.com   Doe
...         ...                    ...

我需要添加一个名为“经理的电子邮件”的栏目,其中包含员工经理的电子邮件。

Employee        email              Manager    Manager's Email 
Smith       asmith@example.com     Johnson    jjohnson@example.com        
Doe         jdoe@example.com       Smith      asmith@example.com        
Johnson     jjohnson@example.com   Doe        jdoe@example.com
...         ...                    ...        ...

例如,对于员工'史密斯',由于他的经理是'约翰逊',该行的'经理电子邮件'的价值将是员工'约翰逊'的电子邮件

1 个答案:

答案 0 :(得分:0)

您可以使用pandas.DataFrame.merge

>>> dfN = pd.merge(df, df, how='left', left_on='Manager', right_on='Employee', suffixes=['',"_m"])
>>> del dfN['Employee_m']
>>> del dfN['Manager_m']
>>> dfN = dfN.rename(columns={'email_m':"Manager's email"})
>>> dfN
  Employee  Manager                 email       Manager's email
0    Smith  Johnson    asmith@example.com  jjohnson@example.com
1      Doe    Smith      jdoe@example.com    asmith@example.com
2  Johnson      Doe  jjohnson@example.com      jdoe@example.com