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[“男性工资”]