【问题标题】:where does this parenthesis come from?这个括号是从哪里来的?
【发布时间】:2020-07-31 06:46:30
【问题描述】:

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

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

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

【问题讨论】:

  • 这是一个元组,试试:print(data_enc.columns[0][0])

标签: python pandas dataframe kaggle label-encoding


【解决方案1】:

问题在于您如何创建data_enc 的columns。您传递了一个 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')

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但随后new_data 变成了系列。所以它不会有一个列。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 2018-09-25
      • 2014-10-23
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多