如何用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
相关产品推荐
相关产品推荐

