1

我是熊猫的新手,我处于基础阶段。

我尝试对一些数据进行编码并将相同的列放入 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

我的问题是,括号从何而来,如何删除它们?

4

3 回答 3

1

问题是您如何创建columnsdata_enc。你传递了一个list包含一个对象的Index对象。由于这种嵌套,pandas 决定创建一个损坏的 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')
于 2020-04-17T17:56:48.633 回答
0

new_data = data['HeatingQC'][:35].copy()不使用列表索引数据框怎么样?这样你应该得到一个系列。

于 2020-04-17T17:22:07.907 回答
0

括号在那里是因为您的代码返回了一个元组。要摆脱它们,请运行:

print(data_enc.columns[0][0]) 代替: print(data_enc.columns[0])

于 2020-04-17T17:24:45.927 回答