保留/切片pandas中的特定列

bdi*_*nte 16 python pandas

我知道这些列切片方法:

df2 = df[["col1", "col2", "col3"]]df2 = df.ix[:,0:2]

但我想知道是否有一种方法可以从同一切片中的数据帧的前/中/末端切片,而无需特别列出每一列.

例如,df具有列的数据框:col1,col2,col3,col4,col5和col6.

有没有办法做这样的事情?

df2 = df.ix[:, [0:2, "col5"]]

我正处于这样的情况:我有数百列,并且通常需要根据不同的请求对特定列进行切片.我查看了文档并没有看到类似的东西.我忽略了什么吗?

DSM*_*DSM 14

IIUC,我能想到的最简单的方法是这样的:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(5, 10))
>>> df[list(df.columns[:2]) + [7]]
          0         1         7
0  0.210139  0.533249  1.780426
1  0.382136  0.083999 -0.392809
2 -0.237868  0.493646 -1.208330
3  1.242077 -0.781558  2.369851
4  1.910740 -0.643370  0.982876
Run Code Online (Sandbox Code Playgroud)

其中list调用不是可选的,否则Index对象将尝试将其自身向量添加到7.

有可能像numpy r_这样的特殊情况

df[col_[:2, "col5", 3:6]]
Run Code Online (Sandbox Code Playgroud)

会工作,虽然我不知道这是否值得麻烦.


K.-*_*Aye 5

如果您的列名具有可以过滤的信息,则可以使用df.filter(regex ='name*').我用它来从我的189个数据通道之间进行过滤,从a1_01到b3_21,它运行正常.