问答中心分类: PYTHON替换数据帧中的列值
0
匿名用户 提问 32分钟 前

我试图替换数据帧中一列中的值。列(’female’)仅包含值“female”和“male”。
我尝试了以下方法:

w['female']['female']='1'
w['female']['male']='0'

但收到与之前结果完全相同的副本。
理想情况下,我希望得到一些类似于以下循环元素的输出。

if w['female'] =='female':
    w['female'] = '1';
else:
    w['female'] = '0';

我看了gotchas的文档(http://pandas.pydata.org/pandas-docs/stable/gotchas.html)但无法理解为什么什么都没有发生。
任何帮助都将不胜感激。

14 Answers
0
Jimmy Petersson 回答 32分钟 前

您可以使用loc编辑数据帧的子集:

df.loc[<row selection>, <column selection>]

在这种情况下:

w.loc[w.female != 'female', 'female'] = 0
w.loc[w.female == 'female', 'female'] = 1
Dhruv Ghulati 回复 32分钟 前

我该如何调整它,以便不需要通过条件选择特定行,只需选择特定列中的所有行?因此,将列中的所有单元格更改为特定值。

user4322543 回复 32分钟 前

@Dhruvghula,您将使用df。loc[:,]

0
jfs 回答 32分钟 前
w.female.replace(to_replace=dict(female=1, male=0), inplace=True)

看见熊猫。数据帧。替换()文档.

Andrew Brēza 回复 32分钟 前

这是我遇到的问题的最佳解决方案,谢谢!

0
deckard 回答 32分钟 前

轻微变化:

w.female.replace(['male', 'female'], [1, 0], inplace=True)
0
Nick Crawford 回答 32分钟 前

这也应该起作用:

w.female[w.female == 'female'] = 1 
w.female[w.female == 'male']   = 0
0
Azz 回答 32分钟 前

这非常紧凑:

w['female'][w['female'] == 'female']=1
w['female'][w['female'] == 'male']=0

另一个很好的例子:

w['female'] = w['female'].replace(regex='female', value=1)
w['female'] = w['female'].replace(regex='male', value=0)
Nordle 回复 32分钟 前

第一个示例是链式索引,并受到警告,因为它无法保证生成的df是副本还是视图。看见链式索引