如何在DataFrame中满足FD>0.7时创建带索引后缀的哑编码列
解决方案
步骤说明
- 先筛选出所有
FD > 0.7的行的索引 - 为每个满足条件的行创建独立的哑编码列,列名按
outlier1、outlier2...的规则命名 - 每个新列仅在对应满足条件的行位置赋值为1,其余行赋值为0
代码实现
假设你的DataFrame名为df,先确保已导入pandas:
import pandas as pd
然后执行以下代码:
# 1. 筛选出FD大于0.7的行的索引 outlier_rows = df[df['FD'] > 0.7].index.tolist() # 2. 遍历每个满足条件的行,创建对应的哑编码列 for seq_num, row_idx in enumerate(outlier_rows, start=1): # 定义列名 col_name = f"outlier{seq_num}" # 先给新列全赋值0 df[col_name] = 0 # 在对应行的位置赋值1 df.loc[row_idx, col_name] = 1
效果示例
以你提供的样本数据为例,处理后结果如下:
FD outlier1 outlier2 0 0.5 0 0 1 0.8 1 0 2 0.9 0 1 3 0.4 0 0
对原代码的说明
你之前的代码仅生成了一列,是因为只创建了一个列表存储所有行的判断结果,而现在需要为每个满足条件的行单独生成一列,所以要遍历满足条件的行来逐个创建新列。
内容的提问来源于stack exchange,提问作者PBAB
相关产品推荐
相关产品推荐

