Подтвердить что ты не робот

Как удалить столбец из фрейма данных с помощью pandas?

Я прочитал свои данные

import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df

и получим:

          id    text
0    361.273    text1...
1    374.350    text2...
2    374.350    text3...

Как удалить столбец id из вышеуказанного фрейма данных?. Я попробовал следующее:

import pandas as pd
df = pd.read_csv('/path/file.tsv', header=0, delimiter='\t')
print df.drop('id', 1)

Но это вызывает это исключение:

ValueError: labels ['id'] not contained in axis
4b9b3361

Ответ 1

Вам действительно нужно удалить столбец? если нет, то вы можете просто выбрать интересующий столбец так:

In [54]:

df['text']
Out[54]:
0    text1
1    text2
2    textn
Name: text, dtype: object

Если вы никогда не хотели этого в первую очередь, вы передаете список cols в read_csv в качестве параметра usecols:

In [53]:
import io
temp="""id    text
363.327    text1
366.356    text2
37782    textn"""
df = pd.read_csv(io.StringIO(temp), delimiter='\s+', usecols=['text'])
df
Out[53]:
    text
0  text1
1  text2
2  textn

Относительно вашей ошибки это потому, что 'id' не находится в ваших столбцах или что оно написано иначе или имеет пробелы. Чтобы проверить этот вывод на выходе из print(df.columns.tolist()), это выведет список столбцов и покажет, есть ли у вас ведущее/конечное пустое пространство.

del df['id'] или df.drop('id', 1) должны работать, если прошедший столбец точно соответствует

Ответ 2

df.drop(colname, axis=1) (или del df[colname]) - правильный метод, используемый для удаления столбца.

Если a ValueError поднят, это означает, что имя столбца не совсем так, как вы думаете.

Проверьте df.columns, чтобы увидеть, что Pandas считает имена столбцов.

Ответ 3

Лучший способ удалить столбец в pandas - использовать drop:

df = df.drop('column_name', axis=1)

где 1 - номер оси (0 для строк и 1 для столбцов.)

Чтобы удалить столбец без переназначения df, вы можете сделать:

df.drop('column_name', axis=1, inplace=True)

Наконец, чтобы удалить по столбцу номер вместо метки столбца, попробуйте удалить это, например. 1, 2 и 4 столбцы:

df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 


Исключения:

Если запрашивается неправильный номер столбца или метка, будет выдана ошибка. Чтобы проверить количество столбцов, используйте df.shape[1] или len(df.columns.values), а для проверки меток столбцов используйте df.columns.values.

Исключение будет поднято ответ был основан на @LondonRob answer и оставлен здесь, чтобы помочь будущим посетителям этой страницы.