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.我怎么能做对的?
你可以通过一个字典并致电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上循环,另外,改变你正在迭代的容器并不是一个好主意,因为它会产生奇怪的行为,例如它有时可行或不可行.