You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Pandas DataFrame中用唯一整数替换疾病字符串

没问题!这里有几种实用的方法可以帮你把DataFrame中的疾病名称替换成唯一整数,你可以根据需求选择:

方法1:用Pandas的factorize()快速自动映射

这个方法会自动给每个唯一的疾病名称分配一个递增的整数,默认从0开始,如果你想从1开始,只需要加1就行,非常适合不需要手动指定映射关系的场景:

import pandas as pd

# 构建你的原始DataFrame
df = pd.DataFrame({
    'epi_week': [21835, 21836, 21837, 21838, 21839],
    'state': ['WY', 'WY', 'WY', 'WY', 'WY'],
    'loc_type': ['STATE', 'STATE', 'STATE', 'STATE', 'STATE'],
    'disease': ['MUMPS', 'POLIO', 'HEPATITIS', 'MUMPS', 'HEPATITIS'],
    'cases': [2, 3, 3, 6, 6],
    'incidence': [0.40, 0.76, 0.61, 1.73, 1.21]
})

# 替换disease列,从1开始分配整数
df['disease'] = pd.factorize(df['disease'])[0] + 1

print(df)

运行后输出的结果就是你想要的:

epi_week state loc_type  disease  cases  incidence
0     21835    WY    STATE        1      2       0.40
1     21836    WY    STATE        2      3       0.76
2     21837    WY    STATE        3      3       0.61
3     21838    WY    STATE        1      6       1.73
4     21839    WY    STATE        3      6       1.21

方法2:自定义映射字典(手动指定对应关系)

如果你需要明确指定每个疾病对应的整数(比如必须让'MUMPS'对应1,'POLIO'对应2),可以用自定义字典来实现:

# 定义你想要的映射关系
disease_map = {
    'MUMPS': 1,
    'POLIO': 2,
    'HEPATITIS': 3
}

# 替换disease列
df['disease'] = df['disease'].map(disease_map)

print(df)

这个方法的好处是完全可控,你可以按照自己的需求设置每个疾病的对应值。

方法3:用LabelEncoder(适合机器学习场景)

如果你后续要做机器学习相关的任务,scikit-learn的LabelEncoder是个不错的选择,它同样可以实现映射,而且方便后续的逆转换:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
# 拟合并转换,加1让整数从1开始
df['disease'] = le.fit_transform(df['disease']) + 1

# 如果你想查看原始疾病和整数的对应关系,可以用这个:
# print(dict(zip(le.classes_, le.transform(le.classes_) + 1)))

print(df)

这个方法的优势是可以轻松恢复原始的疾病名称(用le.inverse_transform()),适合需要来回转换的场景。

内容的提问来源于stack exchange,提问作者wahidd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:27:27