Pandas Dataframe选择多个不连续的列/切片

时间:2018-05-02 20:58:03

标签: python pandas slice

我的数据框包含> 100列。我想选择0~32和#83列。使用下面的代码看起来1个切片工作正常。

df_new = df[df.columns[0:32]]

虽然它不适用于下面的2个切片代码。我该如何解决这个问题?

df_new = df[df.columns[0:32, 83]]

3 个答案:

答案 0 :(得分:7)

np.r_索引器与iloc结合使用,如下所示:

df.iloc[:, np.r_[0:32, 83]]
np.r_[0:32, 83]

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 83])

答案 1 :(得分:1)

np.r_是一个很好的答案。另一种方法是用列表和范围构建它。

考虑这个例子:

import pandas as pd

df = pd.DataFrame([range(10)],range(10))
cols = list(range(0,5))+[8]              # 0,1,2,3,4,8
df.iloc[:,cols]

答案 2 :(得分:0)

我也对这个问题很感兴趣。我们可以选择几个单独的行或列。但似乎切片操作只能在每个轴上完成一次。如下所示。

new_df=df.iloc[[2,3,4],[3:4]]

也许我们可以先切片,然后将它们连接在一起。

df1=df.iloc[[2:4],:]
df2=df.iloc[[8:10],:]
new_df=pd.concat([df1,df2],axis=0)