如何使用pandas基于DataFrame指定列生成dummy虚拟变量
基于DataFrame单列生成虚拟变量的实现方案
以下分别提供Python(Pandas)和R语言两种常用场景的实现方式:
Python (Pandas 环境)
方法1:布尔值直接转整型(最简便)
直接对判断条件返回的布尔序列(True/False)做整型转换,True自动对应1,False对应0:
import pandas as pd # 假设df是你的DataFrame,iloc[:,0]代表取第1列,生成的虚拟变量列名为dummy df['dummy'] = (df.iloc[:, 0] > 0.25).astype(int)
如果已知待处理列的列名(比如列名为value),更稳妥的写法是用列名索引:
df['dummy'] = (df['value'] > 0.25).astype(int)
方法2:numpy where 实现(适合扩展多条件)
如果后续需要调整规则增加更多判断分支,用np.where更灵活:
import pandas as pd import numpy as np df['dummy'] = np.where(df.iloc[:, 0] > 0.25, 1, 0)
注意:以上两种写法中,观测值等于0.25时默认赋值为0,如果需要将等于0.25的情况归为1,将判断条件中的
>改为>=即可。
R 语言环境
方法1:逻辑值转整型
# 假设df是你的数据框,[,1]代表取第1列,生成的虚拟变量列名为dummy df$dummy <- as.integer(df[,1] > 0.25)
方法2:ifelse 实现
df$dummy <- ifelse(df[,1] > 0.25, 1, 0)
内容的提问来源于stack exchange,提问作者Marzieh Karimi
相关产品推荐
相关产品推荐

