首页 > 解决方案 > 如何仅选择具有序列名称的列到列表中

问题描述

我有一个熊猫数据框,其中包含 [ProDT、ID、...、D1、D2、D3...D7...] 的列。我想提取 D1~D15 的列名列表。

我应用了代码:

df_D = [col for col in df.columns if 'D' in col] 

但是,将选择包含字符“D”的所有列。D* 列的数量可能会发生变化,因此使用 range(1,7) 可能不是一个好的解决方案。

非常感谢。

标签: pythonpandaslistsequencemultiple-columns

解决方案


您可以使用DataFrame.filter选择与以下模式匹配的所有列:

df.filter(regex=r'^D\d+')

细节

  • ^D\d+

    • ^在行首断言位置
    • D从字面上匹配字符 D(区分大小写)
    • \d+匹配一个数字(等于 [0-9])
    • + 量词 - 匹配一次到无限次,尽可能多次,根据需要回馈

推荐阅读