我正在使用Datacamp平台为泰坦尼克号做一个Kaggle教程。
我了解.loc在Pandas中的用法--使用列标签逐行选择值……
我的困惑来自于这样一个事实:在Datacamp教程中,我们希望定位"Sex“列中的所有"Male”输入,并将其替换为0。他们使用以下代码段来完成此操作:
titanic.loc[titanic["Sex"] == "male", "Sex"] = 0有人能解释一下这是怎么回事吗?我以为.loc接受行和列的输入,那么==是用来做什么的?
它不应该是:
titanic.loc["male", "Sex"] = 0谢谢!
发布于 2017-07-11 22:02:10
它将列Sex设置为1。如果条件仅为True,则其他值保持不变:
titanic["Sex"] == "male"示例:
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 indexing和loc非常相似-它只按条件选择列Sex的值:
print (titanic.loc[titanic["Sex"] == "male", "Sex"])
0 male
2 male
Name: Sex, dtype: object但我认为在这里,如果只需要将male和female值转换为其他值,则使用map更好:
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用于按索引和列设置新值:
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 malehttps://stackoverflow.com/questions/45036584
复制相似问题