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

如何用Pandas合并DataFrame中所有前缀为result的列?

问题描述

动态生成的DataFrame包含数量不定、后缀任意(如x、y、z等)的前缀为result的列,同时还有其他非result前缀的列(如username、address、xapi_data等)。需要将所有result前缀的列的值合并为一个字符串,生成仅保留合并后result列的简化DataFrame。

示例输入(多列情况):

result  result_x  result_y  result_z  username
0       0         1         1         0    alice
1       0         1         0         1      bob

期望输出:

result
0  0110
1  0101
解决方案

步骤1:筛选result前缀列

用正则匹配筛选所有以result开头的列,不管后缀形式:

result_cols = df.filter(regex='^result')

步骤2:逐行合并为字符串

将筛选出的列值转为字符串后逐行拼接,覆盖原result列:

df['result'] = result_cols.astype(str).apply(''.join, axis=1)

步骤3:生成简化DataFrame

仅保留合并后的result列(如需其他列,直接添加列名到列表即可):

simplified_df = df[['result']]

完整代码示例

import pandas as pd

# 模拟动态生成的DataFrame
data = {
    'result': [0, 0],
    'result_x': [1, 1],
    'result_y': [1, 0],
    'result_z': [0, 1],
    'username': ['alice', 'bob'],
    'address': ['NY', 'LA']
}
df = pd.DataFrame(data)

# 执行合并操作
result_cols = df.filter(regex='^result')
df['result'] = result_cols.astype(str).apply(''.join, axis=1)

# 生成简化结果
simplified_df = df[['result']]
print(simplified_df)

输出结果:

result
0  0110
1  0101

补充说明

  • 若需保留其他列(如username),修改最后一行:simplified_df = df[['result', 'username']]
  • astype(str)确保数值转为字符串,避免出现数值相加的错误
  • 正则^result精准匹配所有以result开头的列,适配任意后缀形式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:55:27