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

如何在百万级DataFrame中生成记录阳性f列编号的新列?

高效生成Result列的解决方案

针对百万行规模的DataFrame,推荐使用矢量化操作实现需求,避免循环或逐行处理带来的性能损耗,具体步骤如下:

方法实现代码

import pandas as pd

# 构造示例DataFrame
data = {
    'ID': [1,2,3,4,5],
    'f_1': [1,0,1,1,0],
    'f_2': [0,1,1,0,1],
    'f_3': [1,1,0,1,1]
}
df = pd.DataFrame(data)

# 提取f类列的编号(转为字符串并添加下划线)
f_cols = df.filter(like='f_')
col_numbers = f_cols.columns.str.extract(r'f_(\d+)', expand=False)
# 矢量化生成Result列
df['Result'] = f_cols.dot(col_numbers + '_').str.rstrip('_')

print(df)

代码说明

  1. 筛选f类列:用df.filter(like='f_')快速定位所有以f_开头的特征列,无需手动指定列名
  2. 提取列编号:通过正则提取列名中的数字部分(如f_1提取为1),转为字符串后添加下划线,方便后续拼接
  3. 矢量化拼接:利用dot方法实现逐行的加权拼接(值为1的列保留对应编号字符串,值为0的列贡献空值),最后用str.rstrip('_')移除末尾多余的下划线

这种方法完全基于pandas的矢量化运算,处理百万行数据的速度远快于apply逐行处理,能有效保证性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:02:38