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

如何在Pandas中实现指定的DataFrame列内容拼接需求?

解决方案

首先构造示例DataFrame:

import pandas as pd

data = {
    'tray': [0, 0, 1, 0, 0],
    'bag': [1, 1, 1, 0, 0],
    'ball': [1, 0, 0, 1, 0]
}
df = pd.DataFrame(data)

方法一:逐行筛选拼接(直观易读)

通过apply按行遍历,筛选值为1的列名并拼接:

df['Presence'] = df.apply(
    lambda row: ','.join([col for col, val in row.items() if val == 1]) or 'No Presence',
    axis=1
)

逻辑说明:

  • 对每行遍历列名和对应值,收集值为1的列名
  • 用逗号连接收集到的列名,若结果为空(全0行),则返回No Presence

方法二:向量运算(高效适合大数据)

利用Pandas的向量运算实现,性能优于逐行遍历:

# 用dot乘积拼接列名,再处理末尾逗号和空值
df['Presence'] = df.dot(df.columns + ',').str.rstrip(',').replace('', 'No Presence')

逻辑说明:

  • df.dot(df.columns + ',')将每行中值为1的列名加逗号后累加
  • str.rstrip(',')移除末尾多余的逗号
  • replace('', 'No Presence')把全0行产生的空字符串替换为指定文本

最终得到的DataFrame如下:

traybagballPresence
011bag,ball
010bag
110tray,bag
001ball
000No Presence

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:55:21