如何在lis中仅选择具有序列名称的列

2024-04-18 22:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含[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)可能不是一个好的解决方案。你知道吗

非常感谢。你知道吗


Tags: columns数据代码iniddf列表for
3条回答

可以使用^{}选择与以下模式匹配的所有列:

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

相关问题 更多 >