gpt4 book ai didi

Python .loc 困惑

转载 作者:太空狗 更新时间:2023-10-30 01:12:05 25 4
gpt4 key购买 nike

我正在使用 Datacamp 平台为泰坦尼克号编写 Kaggle 教程。

我理解 .loc 在 Pandas 中的使用——使用列标签按行选择值...

我的困惑来自于在 Datacamp 教程中,我们想要在“性别”列中找到所有“男性”输入,并将其替换为值 0。他们使用以下代码来完成它:

titanic.loc[titanic["Sex"] == "male", "Sex"] = 0

有人可以解释一下这是如何工作的吗?我以为 .loc 接受了行和列的输入,那么 == 是做什么用的?

不应该是:

titanic.loc["male", "Sex"] = 0

谢谢!

最佳答案

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

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 indexingloc - 它仅根据条件选择 Sex 列的值:

print (titanic.loc[titanic["Sex"] == "male", "Sex"])
0 male
2 male
Name: Sex, dtype: object

但我认为这里更好的是使用 map如果只有 malefemale 值需要转换为其他值:

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 male

关于Python .loc 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com