我想从pandas数据框中选择一组列,但是其中只有一些列是按顺序排列的。 例如,我想写一些类似的东西:
df.loc[:,['a','2001':'2040']]
在这里提出了类似的问题,但答案没有帮助:Select multiple columns by labels (pandas)
就我而言,手动执行此操作太麻烦了。正则表达式是可能的,但是很复杂,因为切片是面向数字的,而不是面向文本的。那么最简单的方法是什么?
答案 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 ]]