Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 修改pandas中的数据帧_Python_Pandas_Dataframe - Fatal编程技术网

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])