繁体   English   中英

从 Python panda 中的两列创建数据框时出错

[英]Error when creating dataframe from two columns in Python panda

当我尝试从两列(即 pids 和 SalePrice)创建数据框时,出现错误“异常:数据必须是一维的”。 我认为错误即将到来,因为这两个数据系列的格式不同,如下所示。 请帮助我如何使这些数据系列相同

ksubmission = pd.DataFrame({'Id':pids,'SalePrice':predictions_kaggle})

例外:数据必须是一维的

pids.shape

(1459,)

predicts_kaggle.shape

(1459, 1)

predicts_kaggle 采用以下格式

array([[115901.20520943],
       [144313.70246636],
       [165320.94012928],
       ...,
       [155759.14767572],
       [111175.64223766],
       [249104.99042467]])

而 pids 的格式如下

0       1461
1       1462
2       1463
3       1464
4       1465
        ... 
1454    2915
1455    2916
1456    2917
1457    2918
1458    2919
Name: Id, Length: 1459, dtype: int64

如果长度相同,我认为您需要这样做:

import pandas as pd
import numpy as np
pd.DataFrame(predictions_kaggle, index=pids).reset_index().rename(columns={'index': 'Id', 0:'SalePrice'}) 

or

pd.DataFrame({'Id':pids,'SalePrice':np.ndarray.flatten(predictions_kaggle)}) 

这里的问题是您的predictions_kaggle数组不是一维数组,而是二维数组。 作为证明,一维数组的形状应为(n,)形式(n,)但您有(n,1)表示数组的每一行都是数组内的单个值。 对此的快速解决方法是展平数组,这会将其变成一维数组:

ksubmission = pd.DataFrame({'Id':pids,'SalePrice':predictions_kaggle.flatten()})

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM