Python创建哑变量时替换列值$符号以修正数据类型问题
解决含$符号列生成哑变量时的数据类型问题
我明白你遇到的问题了——数据列里的$符号搞砸了哑变量的数据类型,让它变成了无符号整数,你想把$替换成空字符串来解决这个问题。先来看下你的输入数据:
grp_m1 grp_m2 grp_m3 grp_m4 $50-$75 $50-$75 $50-$75 $50-$75 $50-$75 $50-$75 $50-$75 $50-$75 $150-$175 $150-$175 $150-$175 $150-$175 $100-$125 $100-$125 $100-$125 $100-$125 $150-$175 $125-$150 $125-$150 $125-$150
你之前尝试的代码逻辑有点小问题,比如if ('$' in str(df_column[column]) == True)这种写法的判断优先级会出错,而且循环处理单个元素的效率也不高。推荐用pandas的矢量化操作来批量替换,既简洁又不会出错:
方案1:批量处理所有列
用replace()方法配合正则表达式,一次性去掉所有列里的$符号:
import pandas as pd # 加载你的数据(假设数据是空格分隔的,用sep="\s+"读取) df = pd.read_csv("your_data_file.csv", sep="\s+") # 替换所有列中的$符号为空字符串 df = df.replace(r'\$', '', regex=True) # 现在生成哑变量,数据类型就会恢复正常了 dummy_variables = pd.get_dummies(df)
方案2:仅处理指定列
如果你只需要处理特定的几列,可以明确指定列名:
# 指定需要处理的列 target_cols = ['grp_m1', 'grp_m2', 'grp_m3', 'grp_m4'] # 仅替换这些列里的$符号 df[target_cols] = df[target_cols].replace(r'\$', '', regex=True)
这样处理后,列值就变成了50-$75、150-$175这类纯区间字符串,生成哑变量时就不会出现无符号整数的问题了。
内容的提问来源于stack exchange,提问作者Shuvayan Das
相关产品推荐
相关产品推荐

