Как использовать все столбцы, кроме одного, в фрейме данных Python?

#python #pandas #numpy #filter

#python #pandas #numpy #Фильтр

Вопрос:

У меня есть фрейм данных, например, с 24 столбцами, и мой вопрос в том, как я могу взять все столбцы, кроме, например, столбца номер 17?

data[:,:] используя такой синтаксис.

Комментарии:

1. Вы можете просто использовать drop() функцию для удаления 17-го столбца, например: df.drop('17_column', 1)

2. df.iloc[:, start_col:end_col]

3. Манакин, но, используя ваш код, я беру только начальный столбец, например, 1, и конечный столбец, например, 16, но я хочу, чтобы все столбцы, кроме номера 17

Ответ №1:

вы можете сделать это:

 data.drop(columns=['a']) # for column name
data.drop(columns=data.columns[17]) # for column index
  

Он возвращает a dataframe , который вы можете использовать.

Для получения дополнительной информации: pandas drop

Комментарии:

1. Спасибо, это намного лучше, чем предыдущее редактирование, которое не сработало, я не могу удалить свой ответ сейчас, но этот метод более удобочитаем.

2. Я обновил ответ. drop([17]) просто удалял строки.

Ответ №2:

Я думаю, что самым простым способом было бы:

 data.loc[:, data.columns != 'col_name']
  

или

 data.loc[:, ~data.columns.isin(['col_name'])]
  

Ответ №3:

Вы можете использовать np.r_ , df.iloc как показано ниже, для индексации на основе позиций с нарезкой:

 pos_of_col= 17
df.iloc[:,np.r_[range(pos_of_col-1),range(pos_of_col,len(df.columns))]]
  

Демонстрация, удаление столбца в позиции 4 (столбец 3, поскольку индексация python начинается с 0)

 np.random.seed(0)
df = pd.DataFrame(np.random.randint(0,20,(5,10))).add_prefix("col_")
print(df,'n')

pos_of_col= 4
print(df.iloc[:,np.r_[range(pos_of_col-1),range(pos_of_col,len(df.columns))]])



   col_0  col_1  col_2  col_3  col_4  col_5  col_6  col_7  col_8  col_9
0     12     15      0      3      3      7      9     19     18      4
1      6     12      1      6      7     14     17      5     13      8
2      9     19     16     19      5     15     15      0     18      3
3     17     19     19     19     14      7      0      1      9      0
4     10      3     11     18      2      0      0      4      5      6 

   col_0  col_1  col_2  col_4  col_5  col_6  col_7  col_8  col_9
0     12     15      0      3      7      9     19     18      4
1      6     12      1      7     14     17      5     13      8
2      9     19     16      5     15     15      0     18      3
3     17     19     19     14      7      0      1      9      0
4     10      3     11      2      0      0      4      5      6