откуда взялась эта скобка?
Я новичок из панд и нахожусь на стадии фундаментальной.
Я попытался закодировать некоторые данные и поместить те же столбцы в data_enc.
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
new_data = data[['HeatingQC']][:35].copy()
data_enc = pd.DataFrame(labelencoder.fit_transform(new_data),
columns = [new_data.columns + '_enc'],
index = new_data.index)
print(data_enc.columns[0])
print(new_data.columns[0])
Но тогда выход неожиданный. то есть
('HeatingQC_enc',)
HeatingQC
У меня вопрос, откуда взялись круглые скобки и как их убрать?
3 ответа
Проблема в том, как вы создали columns
из data_enc. Вы прошлиlist
который содержит Index
объект. Из-за этого вложения панды решили создать неработающий MultiIndex. (Он не работает, потому что это MultiIndex только с одним уровнем, поэтому его действительно не должно быть)
Пример:
df = pd.DataFrame(columns=list('abc'))
# Placing the Index in a list incorrectly leads to a MultiIndex
pd.DataFrame(columns=[df.columns+'_suffix']).columns
#MultiIndex([('a_suffix',),
# ('b_suffix',),
# ('c_suffix',)],)
# Instead get rid of the list, just add the suffix:
pd.DataFrame(columns=df.columns+'_suffix').columns
#Index(['a_suffix', 'b_suffix', 'c_suffix'], dtype='object')
Как насчет new_data = data['HeatingQC'][:35].copy()
вместо индексации фрейма данных списком? Таким образом, вы должны получить одну серию.
Скобки здесь, потому что ваш код вернул кортеж. Чтобы избавиться от них, выполните:
print(data_enc.columns[0][0])
Вместо того:print(data_enc.columns[0])