修改pandas中的DataFrame

koc*_*kir 2 python dataframe pandas

pandas用来挖掘数据.我有一个DataFrame - data:

   Age  Sex     Name 
0  28   male    Kirill
1  32   female  Alina
2  12   female  Sasha
Run Code Online (Sandbox Code Playgroud)

我想替换Sex为数字,而是male使用1,而不是female-0

我尝试循环:

for i in range(data.Age.size()):
    if data.Sex[i]=='male'
        data.Sex[i]=1
    else:
        data.Sex[i]=0
Run Code Online (Sandbox Code Playgroud)

但我得到了一个SettingWithCopyWarning.我怎么能做对的?

EdC*_*ica 5

你可以通过一个字典并致电map:

In [21]:
sex = {'male':1, 'female':0}
df['Sex'] = df['Sex'].map(sex)
df

Out[21]:
   Age  Sex    Name
0   28    1  Kirill
1   32    0   Alina
2   12    0   Sasha
Run Code Online (Sandbox Code Playgroud)

或者对蒙面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
Run Code Online (Sandbox Code Playgroud)

一般情况下,当有可用的矢量化解决方案时,你应该避免在df上循环,另外,改变你正在迭代的容器并不是一个好主意,因为它会产生奇怪的行为,例如它有时可行或不可行.