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

如何从DataFrame中提取固定列与动态数值列

解决方案

以下两种方法均比iloc定位更稳定,不会因为列顺序变动导致筛选结果出错:

方法1:按列名字符串特征筛选

适配你示例中数字/数字格式的动态列名,用正则匹配实现:

import pandas as pd

# 定义固定要保留的列
fixed_cols = ["ZR", "ER"]
# 筛选所有符合数值格式的动态列
dynamic_cols = [
    col for col in df.columns 
    if col not in fixed_cols and pd.Series([col]).str.match(r"^\d+/\d+$").iloc[0]
]
# 合并列名后提取目标数据集
target_df = df[fixed_cols + dynamic_cols]

如果你的数值格式列不局限于数字/数字格式,只要列名可转换为数值即可,可替换动态列筛选逻辑:

def is_numeric_name(col_name):
    try:
        # 适配斜杠分隔的数值格式,替换为小数点后尝试转换
        float(col_name.replace("/", "."))
        return True
    except ValueError:
        return False

dynamic_cols = [col for col in df.columns if col not in fixed_cols and is_numeric_name(col)]

方法2:按列的数据类型筛选

如果动态列的存储类型本身就是数值类(int/float等),可以直接用类型筛选:

fixed_cols = ["ZR", "ER"]
# 筛选所有数值类型的列
numeric_cols = df.select_dtypes(include=["int64", "float64"]).columns.tolist()
target_df = df[fixed_cols + numeric_cols]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:36:06