[英]How do i move data from one column to another on values that aren't equal in pandas?
I have two columns in one data frame 'first name' and 'preferred name'. 我在一个数据框中有两列“名字”和“首选名称”。 If the preferred name is different to first name, I want to move that value to first name.
如果首选名称与名字不同,我想将该值移动到名字。 eg:
例如:
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
slightly impatient, so i did it the 'ugly' way. 有点不耐烦,所以我做了“丑陋”的方式。 queried the data for indices where names are different, and then added them on those values
查询名称不同的索引的数据,然后将它们添加到这些值上
name_index = df[df['first name'] != df['preferred name']]
df.ix[name_index,'first name'] = df.ix[name_index,'preferred name']
The simpliest is only assign as pointed EdChum : 最简单的只是指定为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
You can first create boolean
mask where difference and then add new values by loc
or by mask
: 您可以先创建差异的
boolean
掩码,然后按loc
或mask
添加新值:
mask = df['first name'] != df['preferred name']
df.loc[mask, 'first name'] = df['preferred name']
print (df)
first name preferred name
1 Dave Dave
2 John John
3 Sarah Sarah
4 Liz Liz
Another solution: 另一种方案:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.