aid*_*att 0 python select indices pandas
我有一个(大)数据框。如何按位置选择特定的列?例如第1..3、5、6列
我试图以这种方式而不是只删除column4,因为我的数据集中有很多行,我想按位置进行选择:
df=df[df.columns[0:2,4:5]]
Run Code Online (Sandbox Code Playgroud)
但这给 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 banana
Run Code Online (Sandbox Code Playgroud)
DF输出-所需
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
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式选择第 0、1、4 列:
\n\ndf.iloc[:, [0, 1, 4]]\nRun Code Online (Sandbox Code Playgroud)\n\n您可以在索引和选择数据中阅读更多相关内容。
\n\n\n\n\xe2\x80\xa2 iloc 主要是基于整数位置(从轴的 0 到 length-1),但也可以与布尔数组一起使用。如果请求的索引器越界,.iloc 将引发 IndexError,允许越界索引的切片索引器除外。(这符合 python/numpy 切片语义)。允许的输入有:
\n\n\xe2\x97\xa6 一个整数,例如 5
\n\n\xe2\x97\xa6 整数列表或数组 [4, 3, 0]
\n\n\xe2\x97\xa6 整数为 1:7 的切片对象
\n\n\xe2\x97\xa6 布尔数组
\n\n\xe2\x97\xa6 具有一个参数的可调用函数(调用 Series、DataFrame\n 或 Panel),并返回用于索引的有效输出(上面的\n 之一)
\n
你需要的是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
Run Code Online (Sandbox Code Playgroud)