pandas 使用 iloc 从数据框中切片多个列范围
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/45985877/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 04:22:13 来源:igfitidea点击:
Slicing multiple column ranges from a dataframe using iloc
提问by novicebioinforesearcher
I have a df with 32 columns
我有一个 32 列的 df
df.shape
(568285, 32)
I am trying to rearrange the columns in a specific way, and drop the first column using iloc
我试图以特定方式重新排列列,并使用 iloc 删除第一列
df = df.iloc[:,[31,[1:23],24,25,26,28,27,29,30]]
^
SyntaxError: invalid syntax
is this the right way to do it?
这是正确的方法吗?
回答by cs95
You could use the np.r_
indexer.
您可以使用np.r_
索引器。
class RClass(AxisConcatenator) | Translates slice objects to concatenation along the first axis. | | This is a simple way to build up arrays quickly. There are two use cases.
class RClass(AxisConcatenator) | Translates slice objects to concatenation along the first axis. | | This is a simple way to build up arrays quickly. There are two use cases.
df = df.iloc[:, np.r_[31, 1:23, 24, 25, 26, 28, 27, 29, 30]]
df
0 1 2 3 4 5 6 7 8 9 ... 40 \
A 33.0 44.0 68.0 31.0 NaN 87.0 66.0 NaN 72.0 33.0 ... 71.0
B NaN NaN 77.0 98.0 NaN 48.0 91.0 43.0 NaN 89.0 ... 38.0
C 45.0 55.0 NaN 72.0 61.0 87.0 NaN 99.0 96.0 75.0 ... 83.0
D NaN NaN NaN 58.0 NaN 97.0 64.0 49.0 52.0 45.0 ... 63.0
41 42 43 44 45 46 47 48 49
A NaN 87.0 31.0 50.0 48.0 73.0 NaN NaN 81.0
B 79.0 47.0 51.0 99.0 59.0 NaN 72.0 48.0 NaN
C 93.0 NaN 95.0 97.0 52.0 99.0 71.0 53.0 69.0
D NaN 41.0 NaN NaN 55.0 90.0 NaN NaN 92.0
out = df.iloc[:, np.r_[31, 1:23, 24, 25, 26, 28, 27, 29, 30]]
out
31 1 2 3 4 5 6 7 8 9 ... 20 \
A 99.0 44.0 68.0 31.0 NaN 87.0 66.0 NaN 72.0 33.0 ... 66.0
B 42.0 NaN 77.0 98.0 NaN 48.0 91.0 43.0 NaN 89.0 ... NaN
C 77.0 55.0 NaN 72.0 61.0 87.0 NaN 99.0 96.0 75.0 ... 76.0
D 95.0 NaN NaN 58.0 NaN 97.0 64.0 49.0 52.0 45.0 ... 71.0
21 22 24 25 26 28 27 29 30
A NaN 40.0 66.0 87.0 97.0 68.0 NaN 68.0 NaN
B 95.0 NaN 47.0 79.0 47.0 NaN 83.0 81.0 57.0
C NaN 75.0 46.0 84.0 NaN 50.0 41.0 38.0 52.0
D NaN 74.0 41.0 55.0 60.0 NaN NaN 84.0 NaN