首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python .loc混淆

Python .loc混淆
EN

Stack Overflow用户
提问于 2017-07-11 21:54:58
回答 1查看 731关注 0票数 5

我正在使用Datacamp平台为泰坦尼克号做一个Kaggle教程。

我了解.loc在Pandas中的用法--使用列标签逐行选择值……

我的困惑来自于这样一个事实:在Datacamp教程中,我们希望定位"Sex“列中的所有"Male”输入,并将其替换为0。他们使用以下代码段来完成此操作:

代码语言:javascript
复制
titanic.loc[titanic["Sex"] == "male", "Sex"] = 0

有人能解释一下这是怎么回事吗?我以为.loc接受行和列的输入,那么==是用来做什么的?

它不应该是:

代码语言:javascript
复制
titanic.loc["male", "Sex"] = 0

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 22:02:10

它将列Sex设置为1。如果条件仅为True,则其他值保持不变:

代码语言:javascript
复制
titanic["Sex"] == "male"

示例:

代码语言:javascript
复制
titanic = pd.DataFrame({'Sex':['male','female', 'male']})
print (titanic)
      Sex
0    male
1  female
2    male

print (titanic["Sex"] == "male")
0     True
1    False
2     True
Name: Sex, dtype: bool

titanic.loc[titanic["Sex"] == "male", "Sex"] = 0
print (titanic)

0       0
1  female
2       0

这与boolean indexingloc非常相似-它只按条件选择列Sex的值:

代码语言:javascript
复制
print (titanic.loc[titanic["Sex"] == "male", "Sex"])
0    male
2    male
Name: Sex, dtype: object

但我认为在这里,如果只需要将malefemale值转换为其他值,则使用map更好:

代码语言:javascript
复制
titanic = pd.DataFrame({'Sex':['male','female', 'male']})
titanic["Sex"] = titanic["Sex"].map({'male':0, 'female':1})
print (titanic)
   Sex
0    0
1    1
2    0

编辑:

loc用于按索引和列设置新值:

代码语言:javascript
复制
titanic = pd.DataFrame({'Sex':['male','female', 'male']}, index=['a','b','c'])
print (titanic)
      Sex
a    male
b  female
c    male

titanic.loc["a", "Sex"] = 0
print (titanic)
      Sex
a       0
b  female
c    male

titanic.loc[["a", "b"], "Sex"] = 0
print (titanic)
    Sex
a     0
b     0
c  male
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45036584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档