在熊猫中按标签选择多个列,但并非全部按顺序

时间:2019-02-26 19:50:03

标签: python pandas

我想从pandas数据框中选择一组列,但是其中只有一些列是按顺序排列的。 例如,我想写一些类似的东西:

df.loc[:,['a','2001':'2040']]

在这里提出了类似的问题,但答案没有帮助:Select multiple columns by labels (pandas)

就我而言,手动执行此操作太麻烦了。正则表达式是可能的,但是很复杂,因为切片是面向数字的,而不是面向文本的。那么最简单的方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用列表理解:

In [11]: df.columns
Out[11]: Index(['a', '2001', '2002', '2040', '2041'], dtype='object')

In [12]: [c for c in df.columns if c == "a" or c.isdigit() and 2001 <= int(c) <= 2040 ]
Out[12]: ['a', '2001', '2002', '2040']

In [13]: df[[c for c in df.columns if c == "a" or c.isdigit() and 2001 <= int(c) <= 2040 ]]