【问题标题】:Pandas concat results are misaligned with NaNsPandas concat 结果与 NaN 不一致
【发布时间】:2018-12-21 04:54:17
【问题描述】:

我有一个数据框,用于拟合具有分类和数字特征的 ML 算法。 所以我拆分了这个 df 并用 one-hot 编码转换了分类特征,现在我有了 numpy 矩阵,我必须用数字特征将它加入到 df 中,所以数字数据帧的第一行将获得第一个矩阵行作为新特征。

鉴于谷歌搜索“加入数据框”命令的文档和结果

pd.concat([X_numerical, pd.DataFrame(numpy_matrix)], axis=1)

但是我得到了这个 - 就像“轴”参数被忽略了(我从 np.nan 清理了所有原始数据):

我做错了什么?我希望得到没有这些 NaN 的结果数据帧,df 行与矩阵行一一连接

【问题讨论】:

    标签: python pandas dataframe concat


    【解决方案1】:

    我发现索引未对齐可能存在问题。最好的办法是重置索引:

    df = pd.concat([
           X_numerical.reset_index(), 
           pd.DataFrame(numpy_matrix)
       ], axis=1)
    

    【讨论】:

    • 感谢您的建议,但问题是这些数据框和生成的 numpy 矩阵是将原始数据集拆分为具有一些随机状态的训练和测试部分的结果。如果我要重置索引,我会弄乱对象的数字和分类特征
    • @VladimirKolenov 好吧,索引是错位的原因,也许试试我的编辑?您可以在不删除索引的情况下重置索引。
    • 谢谢,您的编辑似乎对我有所帮助。现在我应该用旧的不道德删除列“索引”是否正确?我会根据你的建议走得更远,希望以后玩不道德的事情不会惩罚我
    • @VladimirKolenov 如果您打算删除索引列,您不妨使用 reset_index(drop=True)。您声称您需要它作为一项功能。我对您的问题一无所知,但是如果您想在连接后将索引保留为列,那么就是这样。
    • @VladimirKolenov 啊...我明白了...不,重置索引不会以任何方式排序或重新索引,只是将其作为列移出索引,或完全删除。希望清除它:-)
    猜你喜欢
    • 2016-03-27
    • 2017-03-13
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多