python - Pandas 不会将分类数据 [sex] 更改为数值 [0/1]
问题描述
我正在尝试处理泰坦尼克号数据集。我想将Sex
列转换为二进制值。这是我的尝试:
sex = train_dataset['Sex'].replace([0,1],['female','male'],inplace=True)
当我尝试时print(sex)
,控制台输出None
!
我也尝试在 SO 上实施其他方法,但它们似乎都不起作用。以下是我的完整源代码:
import pandas as pd
from numpy import corrcoef
train_dataset = pd.read_csv("https://raw.githubusercontent.com/oo92/Titanic-Kaggle/master/train.csv")
test_dataset = pd.read_csv("https://raw.githubusercontent.com/oo92/Titanic-Kaggle/master/test.csv")
survived = train_dataset['Survived']
pClass = train_dataset['Pclass']
#Doesn't work
sex = train_dataset['Sex'].replace([0,1],['female','male'],inplace=True)
age = train_dataset['Age']
fare = train_dataset['Fare']
parch = train_dataset['Parch']
sibSp = train_dataset['SibSp']
# print("Correlation between parent-children & survival is: " + str(corrcoef(survived, parch)))
# print("Correlation between age & survival is: " + str(corrcoef(survived, age)))
# print("Correlation between Siblings/Spouse & survival is: " + str(corrcoef(survived, sibSp)))
print(sex)
解决方案
参数的官方文档:
inplace : bool,默认 False 如果为 True,则就地。注意:这将修改此对象上的任何其他视图(例如,来自 DataFrame 的列)。如果为 True,则返回调用者。
总而言之,inplace=True
返回None
并inplace=False
返回执行操作的对象的副本。
因此,在您的操作中inplace=True
,原始系列对象train_dataset['Sex']
被修改。尝试打印train_dataset
操作后,您应该会看到修改后的数据框。
参考这里的官方文档
推荐阅读
- python-3.x - Pandas 数据框使用列逻辑对行进行重复数据删除
- azure - Azure AD“组”声明未传递给 mod_auth_openidc
- javascript - 为什么我不能从文件中导入 React 组件?
- r - R函数as.Date错误转换1天
- javascript - JS中的计算顺序
- google-apis-explorer - 列出 Google 课堂 API 中的 30 多条记录
- java - varchar 的 Postgres 数组和枚举的 Java/Kotlin 集合之间的休眠映射
- javascript - 根传奇的推荐模式是什么?
- oracle - 查询以检索没有数据的行,即使不满足 Oracle 中的 where 子句条件
- azure-durable-functions - 为什么在调度和执行活动功能之间会有如此长的延迟?