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

如何提取DataFrame每行中值为1的列名并生成对应列表

实现方案

基础实现(适合小数据量场景)

你可以直接通过pandas的行级apply操作实现需求,完整代码如下:

  1. 首先构造样例DataFrame(如果你的数据已经读取完成可以跳过这一步)
import pandas as pd

df = pd.DataFrame([
    [0,0,1,0,0,0,0,0],
    [0,1,1,0,0,0,0,0],
    [0,0,1,1,1,1,1,1],
    [0,0,1,0,1,0,0,0]
], columns=['P00','P1','P10','P11','P12','P13','P14','P15'])
  1. 核心处理逻辑
# 逐行筛选值为1的列,提取列名转为列表
result = df.apply(lambda row: row[row == 1].index.tolist(), axis=1)
  1. 输出验证
for item in result:
    print(item)

运行后输出和你要求的结果完全一致:

['P10']
['P1', 'P10']
['P10', 'P11', 'P12', 'P13', 'P14', 'P15']
['P10', 'P12']

优化实现(适合大数据量场景)

如果你的DataFrame行数非常多,apply的行遍历效率较低,可以使用向量化操作提速:

result = df.dot(df.columns + ',').str.rstrip(',').str.split(',')

该方法通过矩阵点积直接完成列名拼接,效率比apply高1~2个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:54:07