python - Python如何将分类值映射到新的数值而不获取索引必须是整数错误?
问题描述
我需要将一些分类值映射到整数。我在以下链接尝试了解决方案In[24]
:
title_mapping = {"Mr": 0, "Miss": 1, "Mrs": 2,
"Master": 3, "Dr": 3, "Rev": 3, "Col": 3, "Major": 3, "Mlle": 3,"Countess": 3,
"Ms": 3, "Lady": 3, "Jonkheer": 3, "Don": 3, "Dona" : 3, "Mme": 3,"Capt": 3,"Sir": 3 }
for dataset in train_test_data:
dataset['Title'] = dataset['Title'].map(title_mapping)
从我的脚本:
for dataset in train:
dataset['Title'] = dataset['Title'].map(title_mapping)
这是带有 Title 字段的数据框:
我不断收到以下错误:
TypeError:字符串索引必须是整数
解决方案
该错误可能是因为您尝试从train
DataFrame 而不是 DataFrames 列表进行迭代train_test_data
。
尝试简单地做:
train['Title'] = train['Title'].map(title_mapping)
您首先基于的笔记本在 [21] 处创建了一个数据帧列表:
train_test_data = [train, test]
因此,当它在 [24] 处迭代时,它首先遍历train
然后test
完全遍历,这是映射列时需要的。
顺便说一句,如果您想从 DataFrame 中逐行迭代,请执行以下操作:
for index_value, row in df.iterrows():
print(index_value)
# you can work for each column from that row:
print(row['column_name'])
>>> 0
>>> I'm a column value
推荐阅读
- node.js - 通过 API 网关 MethodNotAllowed 使用自定义端点的 S3 预签名 URL
- jestjs - 有没有办法让 `toHaveBeenCalledWith` 匹配正则表达式?
- kubernetes - imagePullSecrets 不适用于 Kind 部署
- scala - Spark-rdd 操作数据
- office-js - 在 Office 插件清单中,Outlook for Mac 是否支持 v1.5/1.6?
- oracle - Oracle Apex - 按下按钮时更改 SQL 查询
- networking - 如何隔离和保护本地 PC 上运行的 Windows Server HyperV VM?
- javascript - 通过单击按钮更改背景和文本颜色
- oracle - Oracle SQL Loader 的日期时间戳问题。错误缺少逗号
- php - 如何使用 Smarty 解析 JSON 对象?