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

如何用Pandas实现带if else条件的动态列生成与数据转换

Pandas 实现代码及说明

核心实现步骤

  • 第一步:对location、category字段做独热编码,自动生成带指定前缀的0/1列
  • 第二步:对ftecount、bpssscore字段做阈值判断,转换为0/1值
  • 第三步:按project聚合得到主键唯一的结果表

完整代码

import pandas as pd
import numpy as np

# 1. 读取原始数据(替换为你自己的数据源读取逻辑)
df = pd.read_csv("your_data_path.csv")

# 2. 生成location、category对应的独热编码列
df_encoded = pd.get_dummies(
    df,
    columns=["location", "category"],
    prefix=["loc", "cat"],
    dtype=int  # 直接输出整数1/0,无需额外转换布尔值
)

# 3. 转换ftecount、bpssscore为0/1值
df_encoded["ftecount"] = np.where(df_encoded["ftecount"] > 3, 1, 0)
df_encoded["bpssscore"] = np.where(df_encoded["bpssscore"] > 3, 1, 0)

# 4. 按project聚合,得到主键唯一的结果
# 若原始数据每个project仅有一行,可跳过此步,直接输出df_encoded即可
result_df = df_encoded.groupby("project", as_index=False).max()

# 可选:仅保留需要的字段,过滤掉原始不需要的列
keep_columns = ["project"] + [col for col in df_encoded.columns if col.startswith(("loc_", "cat_", "ftecount", "bpssscore"))]
result_df = result_df[keep_columns]

说明

  • 独热编码逻辑完全适配需求:会自动提取location、category的所有唯一值生成新列,前缀匹配要求,对应行匹配时赋值1,否则为0
  • 聚合时用max()是为了保证同一个project下只要出现过对应location、category,对应列就标记为1,符合大部分业务场景的特征统计需求,你也可以根据实际业务调整聚合规则
  • 用np.where比apply处理大体积数据集时效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:36:03