Python 在列中有条件地填充行值

Python 在列中有条件地填充行值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个由他们的名字表示的男女工人工资数据集 Male Female Male_Wage Female_Wage James Lori 8 9 Mike Nancy 10 8 Ron Cathy 11 12 Jon Ruth 15 9 Jason Jackie 10

我有一个由他们的名字表示的男女工人工资数据集

 Male     Female    Male_Wage  Female_Wage
 James     Lori        8            9
 Mike      Nancy       10           8
 Ron       Cathy       11           12
 Jon       Ruth        15           9
 Jason     Jackie      10           10
在pandas中,我想在数据框中创建一个新列,显示薪酬最高的人的姓名。如果存在支付相同金额的条件,则价值应相同

     Male     Female    Male_Wage  Female_Wage  Highest_Paid
     James     Lori        8            9          Lori
     Mike      Nancy       10           8          Mike
     Ron       Cathy       11           12         Cathy
     Jon       Ruth        15           9          Jon
     Jason     Jackie      10           10         Same
我已经能够添加一列并用值填充它,根据其他列计算值等,但无法根据另一列的值有条件地填充新列,条件相同。在实例中,工资相同给我带来了麻烦。我一直在寻找答案,但没有找到任何能涵盖这种情况所有要素的答案

谢谢您的帮助。

方法1:
np。选择
:
我们可以指定我们的条件,并基于这些条件,我们得到
男性
女性
的值,否则
default='Same'

conditions = [
    df['Male_Wage'] > df['Female_Wage'],
    df['Female_Wage'] > df['Male_Wage']
]

choices = [df['Male'], df['Female']]

df['Highest_Paid'] = np.select(conditions, choices, default='Same')

    Male  Female  Male_Wage  Female_Wage Highest_Paid
0  James    Lori          8            9         Lori
1   Mike   Nancy         10            8         Mike
2    Ron   Cathy         11           12        Cathy
3    Jon    Ruth         15            9          Jon
4  Jason  Jackie         10           10         Same

方法2:
np.where
+
loc
使用
np.where
.loc
有条件地指定正确的值:

df['Highest_Paid'] = np.where(df['Male_Wage'] > df['Female_Wage'], 
                              df['Male'], 
                              df['Female'])

df.loc[df['Male_Wage'] == df['Female_Wage'], 'Highest_Paid'] = 'Same'

    Male  Female  Male_Wage  Female_Wage Highest_Paid
0  James    Lori          8            9         Lori
1   Mike   Nancy         10            8         Mike
2    Ron   Cathy         11           12        Cathy
3    Jon    Ruth         15            9          Jon
4  Jason  Jackie         10           10         Same

您可以使用
loc
语句来执行此操作

df.loc[df['Male_Wage'] == df['Female_Wage'], 'Highest_Paid'] = 'Same'
df.loc[df['Male_Wage'] > df['Female_Wage'], 'Highest_Paid'] = df['Male']
df.loc[df['Male_Wage'] < df['Female_Wage'], 'Highest_Paid'] = df['Female']
df.loc[df[‘男性工资’]==df[‘女性工资’],‘最高工资’]=‘相同’
df.loc[df[“男性工资”]>df[“女性工资”],“最高工资”]=df[“男性”]
df.loc[df[“男性工资”]