Pandas Dataframe выбирает несколько прерывистых столбцов / срезов - PullRequest
0 голосов
/ 02 мая 2018

У меня есть датафрейм с> 100 столбцами. Я пытаюсь выбрать столбцы 0 ~ 32 и # 83. Кажется, что 1 фрагмент работает нормально с кодом ниже.

df_new = df[df.columns[0:32]]

Это не работает с кодом из 2 частей ниже. Как мне решить проблему?

df_new = df[df.columns[0:32, 83]]

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

np.r_ отличный ответ. Другой подход состоит в том, чтобы построить его со списком и диапазоном.

Рассмотрим этот пример:

import pandas as pd

df = pd.DataFrame([range(10)],range(10))
cols = list(range(0,5))+[8]              # 0,1,2,3,4,8
df.iloc[:,cols]
0 голосов
/ 03 мая 2018

Меня тоже интересует эта проблема. Мы можем выбрать несколько отдельных строк или столбцов. Но, похоже, нарезка может быть выполнена только один раз на каждой оси. Как и следующий.

new_df=df.iloc[[2,3,4],[3:4]]

Может быть, мы можем сначала нарезать, а затем соединить их вместе.

df1=df.iloc[[2:4],:]
df2=df.iloc[[8:10],:]
new_df=pd.concat([df1,df2],axis=0)
0 голосов
/ 03 мая 2018

Используйте индексатор np.r_ вместе с iloc, например:

df.iloc[:, np.r_[0:32, 83]]

np.r_[0:32, 83]

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 83])
...