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

Pandas基于df.query条件提取触发匹配的对应列名实现方法咨询

实现方法

你可以通过pandas的行遍历筛选列名实现需求,代码如下:

import pandas as pd

# 你的原始数据
df_data = pd.DataFrame({'Car':[1,2,3,4],'Renault':[1,0,0,0],'Volkswagen':[0,1,0,0],'Porsche':[0,0,1,0],'Mercedes':[1,1,0,0]})

# 定义参与isGerman判断的德系品牌列
german_brands = ['Volkswagen', 'Porsche', 'Mercedes']

# 方法1:apply行遍历实现,逻辑清晰适合小数据量
df_data['isGermanDetails'] = df_data[german_brands].apply(
    lambda row: ', '.join(row[row == 1].index), axis=1
)

# 方法2:dot矩阵运算实现,效率更高适合十万行以上的大数据量
# df_data['isGermanDetails'] = (df_data[german_brands] == 1).dot(
#     df_data[german_brands].columns + ', '
# ).str.rstrip(', ')

print(df_data)

逻辑说明

  • 首先筛选出所有参与isGerman判断的德系品牌列,排除非相关的Car、Renault列
  • 逐行匹配值为1的列,将对应的列名用逗号拼接,无匹配项的行自动返回空字符串,完全符合你要求的输出效果。

输出结果和你给出的示例完全一致:

Car  Renault  Volkswagen  Porsche  Mercedes       isGermanDetails
0    1        1           0        0         1              Mercedes
1    2        0           1        0         1  Volkswagen, Mercedes
2    3        0           0        1         0               Porsche
3    4        0           0        0         0                      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:03:03