我有一个(大的)数据帧。如何按位置选择特定的列?例如,列1..3、5、6
我尝试这样做,而不是简单地删除column4,因为我的dataset中有大量的行,我想按位置进行选择:
df=df[df.columns[0:2,4:5]]但这给了IndexError: too many indices for array
DF输入
Col1 Col2 Col3 Col4 Col5 Col6
1 apple tomato pear banana banana
1 apple grape nan banana banana
1 apple nan banana banana banana
1 apple tomato banana banana banana
1 apple tomato banana banana banana
1 apple tomato banana banana banana
1 avacado tomato banana banana banana
1 toast tomato banana banana banana
1 grape tomato egg banana bananaDF输出-所需
Col1 Col2 Col3 Col5 Col6
1 apple tomato banana banana
1 apple grape banana banana
1 apple nan banana banana
1 apple tomato banana banana
1 apple tomato banana banana
1 apple tomato banana banana
1 avacado tomato banana banana
1 toast tomato banana banana
1 grape tomato banana banana发布于 2018-01-31 23:11:26
你需要的是numpy np.r_
df.iloc[:,np.r_[0:2,4:5]]
Out[265]:
Col1 Col2 Col5
0 1 apple banana
1 1 apple banana
2 1 apple banana
3 1 apple banana
4 1 apple banana
5 1 apple banana
6 1 avacado banana
7 1 toast banana
8 1 grape banana发布于 2018-01-31 22:58:57
您可以通过以下方式选择第0、1、4列:
df.iloc[:, [0, 1, 4]]你可以在Indexing and Selecting Data上阅读更多关于这方面的内容。
·iloc主要是基于整数位置(从0到轴的长度-1),但也可以与布尔数组一起使用。如果请求的索引器越界,则.iloc将引发IndexError,但允许越界索引的切片索引器除外。(这符合python/numpy切片语义)。允许的输入包括:
系列整数例如5系列整数的列表或数组4,3,0◦带有整数1:7的切片对象◦布尔数组◦具有一个参数的可调用函数(调用系列、系列或面板),并返回用于索引(上述之一)的有效输出
发布于 2018-01-31 23:01:23
使用pandas iloc方法:
df_filtered = df.iloc[:, [1,2,3,5,6]]https://stackoverflow.com/questions/48545076
复制相似问题