在另一列中,Pandas的值不相等?

2024-09-28 20:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个数据框中有两列“名字”和“首选名”。如果首选名称与名字不同,我希望将该值移动到first name。e、 g.:

   First Name  Preferred Name  
1  David       Dave       
2  John        John        
3  Sarah       Sarah
4  Elizabeth   Liz



   First Name  Preferred Name  
1  Dave        Dave       
2  John        John        
3  Sarah       Sarah
4  Liz         Liz  

Tags: 数据name名称名字johnfirstdaviddave
2条回答

最简单的是只指定为指向的EdChum

df['first name'] = df['preferred name']
print (df)
  first name preferred name
1       Dave           Dave
2       John           John
3      Sarah          Sarah
4        Liz            Liz

您可以先创建boolean掩码,然后通过^{}^{}添加新值:

^{pr2}$

另一种解决方案:

mask = df['first name'] != df['preferred name']
df['first name'] = df['first name'].mask(mask,df['preferred name'])
print (df)
  first name preferred name
1       Dave           Dave
2       John           John
3      Sarah          Sarah
4        Liz            Liz

有点不耐烦,所以我用了“丑陋”的方式。在数据中查询名称不同的索引,然后将它们添加到这些值上

name_index = df[df['first name'] != df['preferred name']]
df.ix[name_index,'first name'] = df.ix[name_index,'preferred name']

相关问题 更多 >