Python中为聚类将DataFrame字符串转为数字的方法
把CSV中ord_2列的字符串转成指定整数的方法
假设你已经用pandas读取了CSV数据,存在变量df里(比如import pandas as pd; df = pd.read_csv('你的文件.csv')),下面给你几种简单易懂的实现方式:
方法1:直接替换单个指定值
如果你只需要把"Cold"换成1,其他字符串暂时不动,直接用replace方法:
# 将ord_2列里的"Cold"替换成整数1 df['ord_2'] = df['ord_2'].replace('Cold', 1) # 要是需要确保列类型是整数,再加一步 df['ord_2'] = df['ord_2'].astype(int)
方法2:用映射字典处理多个类别
如果后续还要把其他字符串(比如"Warm"、"Hot")也转成对应整数,先做个映射字典,再批量转换:
# 定义每个字符串对应的整数 category_map = { 'Cold': 1, 'Warm': 2, 'Hot': 3, # 可以继续加其他需要转换的类别 } # 按映射替换列中的值 df['ord_2'] = df['ord_2'].map(category_map)
注:如果列里有字典中没包含的字符串,转换后会变成NaN,记得提前处理或者补充字典。
方法3:自动给所有类别分配整数(适合不确定所有类别的情况)
如果不知道ord_2列有多少种不同的字符串,或者想让程序自动给每个唯一字符串分配一个整数,可以用sklearn的标签编码器:
# 先导入编码器 from sklearn.preprocessing import LabelEncoder # 初始化编码器 le = LabelEncoder() # 对ord_2列进行编码,每个唯一字符串会被转成0、1、2...这样的整数 df['ord_2'] = le.fit_transform(df['ord_2'])
注:这种方法的整数是按字符串出现顺序分配的,如果你必须让"Cold"对应1,可以先手动替换"Cold"为1,再用编码器处理其他值。
内容的提问来源于stack exchange,提问作者user17712216
相关产品推荐
相关产品推荐

