将数值映射到字符串

时间:2018-01-30 13:36:46

标签: python pandas dataframe machine-learning

这里有一个数据集:

Dataset

我想将数值映射到CASE_STATUS

df.CASE_STATUS.value_counts()

CERTIFIED              2615623
CERTIFIED-WITHDRAWN     202659
DENIED                   94346

以下是我的操作但有string indices must be integers, not str错误:

for dataset in df:
    dataset['CASE_STATUS'] = dataset['CASE_STATUS'].map( {'CERTIFIED':1 , 'CERTIFIED-WITHDRAWN': 1, 'DENIED': 0} ).astype(int)

我应该如何将值映射到CASE_STATUS

2 个答案:

答案 0 :(得分:1)

我认为你不需要for循环:

dict_map = {'CERTIFIED':1 , 'CERTIFIED-WITHDRAWN': 1, 'DENIED': 0}
df['CASE_STATUS'] = df['CASE_STATUS'].map(dict_map)
df['CASE_STATUS'] = df['CASE_STATUS'].astype(int)

答案 1 :(得分:0)

要获得映射,您可以使用pandas方法to_dict

例如:

mapping = df.reset_index().CASE_STATUS.to_dict()

请注意,我之前使用reset_index()来确保索引从0到n(n =您拥有的行数)。

然后,您可以使用简单的地图转换列:

df["CASE_STATUS"] = df["CASE_STATUS"].map(mapping)

跟踪你的地图转换很有意思,这就是为什么词典创建是重要的一步。