我的数据框包含> 100列。我想选择0~32和#83列。使用下面的代码看起来1个切片工作正常。
df_new = df[df.columns[0:32]]
虽然它不适用于下面的2个切片代码。我该如何解决这个问题?
df_new = df[df.columns[0:32, 83]]
答案 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)