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

如何筛选含(R)的列并保留Class列以复制DataFrame

问题描述

我有如下表格:

ClassHealth (R)Pension (R)Health (E)Pension (E)
101.002.501.253.00
111.002.501.253.00
121.002.501.253.00

含(E)和(R)的列是通过pandas的pivot函数动态生成的,无法直接指定列名。使用df.filter(like = "(R)")可以筛选出含(R)的列,但还需要保留Class列。尝试用df.filter(regex = r"(Class|(R)")时,会误选所有含()的列。请问如何提取Class列和含(R)的列来创建新的DataFrame?

解决方案

这里有几种可靠的实现方法:

方法1:拼接筛选结果

先单独提取Class列,再和含(R)的列横向拼接,逻辑简单直观:

import pandas as pd

# 合并Class列与含(R)的列
filtered_df = pd.concat([df[['Class']], df.filter(like='(R)')], axis=1)

方法2:修正正则表达式

之前的正则问题在于未正确转义括号(括号是正则特殊字符),调整后可精准匹配目标列:

# 正则匹配Class列,或列名以"(R)"结尾的列
filtered_df = df.filter(regex=r'^Class$|\(R\)$')
  • ^Class$:精确匹配Class列,避免匹配到名称含Class的其他列
  • \(R\)$:匹配以"(R)"结尾的列,\用于转义括号
  • |:表示逻辑或,满足任意一个条件即可

方法3:列名列表推导

手动生成目标列名列表,再提取对应列,灵活性更高:

# 生成包含Class和所有含(R)的列名列表
target_cols = ['Class'] + [col for col in df.columns if '(R)' in col]
# 提取目标列
filtered_df = df[target_cols]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:15