我在尝试弄清楚如何在列表中提取多个值时遇到一些困难.例如,给定一个列表l = [0,1,2,3,4,5,6,7,8,9,10],我想只提取值[1,2,3]和[6, 7,8,9].我能做到[1:4] l [6:-1],但有没有办法写l [1:4,6:-1]?
对于我在pandas数据帧中遇到的实际问题,这实际上是一个鬼问题.我有一个数据帧,df,列[‘A’,’B’,’C’,’I1′,’D’,’E’,’F’,’I2′,’I3′],我只有想要保留重要的列[‘I1′,’I2′,’I3’].现在,我正在做的当前方法是
df.drop(df.columns [0:3],axis = 1,inplace = True)
df.drop(df.columns [4:7],轴= 1,inplace = True)
有没有办法做到这一点,我们可以在一行中完成,而无需明确写出列值?
谢谢!
PS.我知道pandas数据帧使用numpy,我也没有在numpy中找到任何变通方法,但我认为删除列的语法是标准的python列表格式,如果这有意义的话.
编辑:我找到了一种方法来做numpy,但它也是2行,从this question.我们可以这样做:
indices = np.hstack((np.arange(0:3),np.arange(4:7))
df.drop(df.columns [indices],axis = 1,inplace = True)
但是,我仍然在寻找1行广义方法.
解决方法:
我认为你需要numpy.r_
的concanecate指数:
print (np.r_[1:4, 6:10])
[1 2 3 6 7 8 9]