Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
568 views
in Technique[技术] by (71.8m points)

python - Pass column index and range simultaneously in Pandas iloc

Suppose I have a dataframe with 100 columns. I want to select only 0,1 and 51-100 columns for all rows. I am trying something like this as of now:

df.iloc[:,[0,1,range(51,101)]]

But it is throwing error:

"setting an array element with a sequence"

Though it is working if I am passing only range and not column indices.

Also I have tried:

df.iloc[:,[0,1,51:102)]]

It is showing invalid syntax.

Can somebody please point out mistake here. Also please suggest alternative way to achieve functionality.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think you need numpy.r_ for concanecate indices:

df.iloc[:,np.r_[0,1,51:102]]

Sample:

df = pd.DataFrame([[0] * 10], columns=list('abcdefghij'))
print (df)
   a  b  c  d  e  f  g  h  i  j
0  0  0  0  0  0  0  0  0  0  0

print (df.iloc[:,np.r_[0,1,5:8]])
   a  b  f  g  h
0  0  0  0  0  0

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...