【问题标题】:Indexing issue when appending two pandas dataframes附加两个熊猫数据框时的索引问题
【发布时间】:2018-03-24 13:45:22
【问题描述】:

我正在对 pandas 中的一列邮政编码进行虚拟化,以便可以在 sklearn 中构建一个随机森林模型。这是我的代码:

forest_test_features = test_df[['sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'grade', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated']] forest_test_features.append(pd.get_dummies(test_df['zipcode'])) forest_test_target = test_df['price']

我收到运行时警告,然后我的模型的 R^2 分数比我简单地将邮政编码留在模型中而不进行虚拟化时要低得多,这表明出现了问题。 pd.get_dummies 返回一个数据框,我认为问题在于这个数据框和 forest_test_features 处于两个不同的顺序,但我不确定如何继续。索引仍然正确(邮政编码 98144 映射到 get_dummies 返回的“98144”列中的“1”。)

我也收到此警告:RuntimeWarning: '

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以指定顺序。我猜你有一个 forest_train_features 数据框。你可以这样做:

    feats = forest_test_features.keys()
    model = RandomForestRegressor()
    model.fit(forest_train_features[feats], forest_train_features['price'])
    prediction = model.predict(forest_test_features[feats])
    

    那么列的顺序应该相同。 您也可以在同一个 DataFrame 中对 train 和 test 进行相同的预处理,然后拆分它

    【讨论】:

    • 您可能会将 DataFrame.concat() 与 DataFrame.append() 混淆。列顺序不是问题。您的评论确实让我意识到我的预处理有点过于复杂了。
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2021-07-28
    • 2021-03-25
    • 2016-06-01
    • 2018-10-07
    • 2020-11-25
    相关资源
    最近更新 更多