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

如何为Python现有Pandas DataFrame添加列及条件因子变量列

问题1:将同行数的df2列追加到现有df

有三种常用方案,适配不同场景:

  • 多列合并首选pd.concat,沿列轴拼接即可,自动保留df2的原有列名:
    df = pd.concat([df, df2], axis=1)
    
  • df2仅为单列时,可直接赋值:
    假设取df2的第一列,自定义列名为target_col:
    df['target_col'] = df2.iloc[:, 0]
    
  • 若要使用assign方法,把df2解包为字典传入即可:
    df = df.assign(**df2)
    
问题2:生成多分类因子列

最灵活的方案是先初始化列默认值,再通过布尔索引为符合条件的行赋值,适配后续还要调整C类规则的需求:

  1. 先计算df2数值列的10%、90%分位数(假设合并后df2的列名为val_col):
    q10, q90 = df['val_col'].quantile([0.1, 0.9])
    
  2. 初始化分类列,默认值设为C,再修改A、B类对应行的值:
    df['factor_col'] = 'C'
    df.loc[df['val_col'] <= q10, 'factor_col'] = 'A'
    df.loc[df['val_col'] >= q90, 'factor_col'] = 'B'
    

后续需要根据df3调整C类取值时,直接新增loc条件修改对应行即可。

示例场景完整代码

对应你给出的df1合并df2、生成二分类列的需求,完整实现如下:

import pandas as pd

# 示例数据(你实际使用时替换为自己读入的df、df2即可)
df1 = pd.DataFrame({'weight': [55, 65, 75, 85, 95], 'height': [160, 170, 175, 180, 185]})
df2 = pd.DataFrame({'age': [22, 35, 42, 50, 38]})

# 合并列
df = pd.concat([df1, df2], axis=1)

# 生成二分类列
df['sex'] = 'B'
df.loc[df['age'] < 40, 'sex'] = 'A'

最终得到的df可直接用于后续的分组筛选、统计、绘图操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:36:06