Python 修改pandas中的数据帧
我使用Python 修改pandas中的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我使用pandas来挖掘数据。我有一个数据帧-数据: Age Sex Name 0 28 male Kirill 1 32 female Alina 2 12 female Sasha 我想将性别替换为数字,而不是男性使用1,而不是女性-0 我尝试在循环中创建: for i in range(data.Age.size()): if data.Sex[i]=='male' data.Sex[i]=1 else:
pandas
来挖掘数据。我有一个数据帧-数据
:
Age Sex Name
0 28 male Kirill
1 32 female Alina
2 12 female Sasha
我想将性别
替换为数字,而不是男性
使用1
,而不是女性
-0
我尝试在循环中创建:
for i in range(data.Age.size()):
if data.Sex[i]=='male'
data.Sex[i]=1
else:
data.Sex[i]=0
但是我用copywarning设置了。
我怎样才能把它做好?你可以通过口述和电话:
或对屏蔽df进行2次呼叫:
In [25]:
df.loc[df['Sex']=='male','Sex'] = 1
df.loc[df['Sex']=='female','Sex'] = 0
df
Out[25]:
Age Sex Name
0 28 1 Kirill
1 32 0 Alina
2 12 0 Sasha
一般来说,当有矢量化解决方案可用时,您应该避免在df上循环,此外,改变您正在迭代的容器不是一个好主意,因为它可能会产生奇怪的行为,例如它有时有效,有时无效。要添加到他们的方法中,如果您不想自己明确定义字典,您可以更好地自动化该过程,如果您有多个唯一值(即5+),这将非常有用
同样,这更多是为了自动化数组中大型唯一值的处理
原始数据帧
Age Sex Name
0 28 male Kirill
1 32 female Alina
2 12 female Sasha
最终结果
Age Sex Name
0 28 1 Kirill
1 32 0 Alina
2 12 0 Sasha
您可以使用该方法,该方法正是这样做的:
data.replace({'male': 1,
'female': 0})
Age Sex Name
0 28 1 Kirill
1 32 0 Alina
2 12 0 Sasha
或
相当于:
data.replace(to_replace=["male", "female"], values=[0, 1])
在这种情况下,列表必须具有相同的长度。您真正想要实现的是什么?新的分类数据类型实际上可能更好地为您服务,这取决于您在此步骤之外的目标。
data.replace({'male': 1,
'female': 0})
Age Sex Name
0 28 1 Kirill
1 32 0 Alina
2 12 0 Sasha
data.replace(["male", "female"], [0, 1])
data.replace(to_replace=["male", "female"], values=[0, 1])