如何 select 仅将具有序列名称的列添加到列表中

How to select only columns with sequence names to a list

我有一个 pandas 数据框,其中包含 [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) 可能不是一个好的解决方案。

非常感谢。

您可以使用 DataFrame.filter 来 select 所有匹配以下模式的列:

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

详情

  • ^D\d+

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

您可以调用每一列:

df[['D1', 'D2', ..., 'D15']]

或使用过滤器:

df.filter(like='D')

希望对您有所帮助

startswith 的旧列表理解:

df[[i for i in df.columns if i.startswith('D')]]

或者:

df.loc[:,df.columns.str.startswith('D')]  #thanks @WeNYoBen

df = df[['D'+str(i) for i in range(1, 16)]]