我知道这些列切片方法:
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)
会工作,虽然我不知道这是否值得麻烦.
如果您的列名具有可以过滤的信息,则可以使用df.filter(regex ='name*').我用它来从我的189个数据通道之间进行过滤,从a1_01到b3_21,它运行正常.
| 归档时间: |
|
| 查看次数: |
27621 次 |
| 最近记录: |