Как удалить столбец из фрейма данных с помощью 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
Ответы
Ответ 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 и оставлен здесь, чтобы помочь будущим посетителям этой страницы.