【问题标题】:Pandas - Converting dataframe object to numbersPandas - 将数据框对象转换为数字
【发布时间】:2020-03-27 22:46:15
【问题描述】:

我有一个看起来像这样的数据框。

x_train.info()

Int64Index: 8330 entries, 16 to 8345
Data columns (total 4 columns):
userId                    8330 non-null object
base_id                   8330 non-null object
rating                    8330 non-null object
dtypes: object(3)

我正在尝试使用以下命令将其转换为稀疏矩阵

train_sparse_matrix = sparse.csc_matrix((x_train['rating'].values, (x_train['userId'].values, x_train['base_id'].values)),)

但我收到以下错误

<ipython-input-112-520f5e1aee89> in <module>
      4 
      5 train_sparse_matrix = sparse.csc_matrix((x_train['result.courseViewCount'].values, (x_train['userId'].values, 

----> 6                                                             **x_train['result.base_id'].values)),)**

TypeError: 'numpy.float64' object cannot be interpreted as an integer

所以我尝试使用 .astype('int32)to_numeric() 函数转换此数据框,但 x_train.info() 仍然显示为对象。

你能帮忙吗!

数据会是这样的:

userId  base_id rating  
5392.0  ABC001  6.0 
5392.0  ETZ222  2.0 
5392.0  XYZ095  1.0 

Is it because the base_id contains alphabets?

【问题讨论】:

  • 试试train_sparse_matrix = sparse.csc_matrix((np.array(x_train['rating'].values), np.array(x_train['userId'].values, x_train['base_id'].values)),),可能会有帮助!
  • 它不起作用,给我同样的错误(numpy.float64' 对象不能被解释为整数)

标签: pandas dataframe type-conversion sparse-matrix dtype


【解决方案1】:

您可以尝试将其转换为 numpy.int64 吗?

.astype(numpy.int64)

如果您提供真实数据的提取,将有助于回答

【讨论】:

  • 用户 id 数据将是这样的 - 5340.0、5555.0、6540.0 等,评级将类似于 6.0、1.0、3.0 等,base_id 将是 ETB223、ABC001、XYZ533。这会有帮助吗?我尝试了 .astype(numpy.int64),但它不起作用。我开始觉得 base_id 包含字母,会是这个原因吗?
  • 您想将哪一列转换为浮点数?用户 ID 和评分列已经是浮点数据类型。 base_id 包含字母数字字符。您不能将它们转换为 float 或 int。
  • 稀疏矩阵只接受 int 所以我试图转换为 int 但它不起作用。
  • 您不能将“ABC”转换为 int 或 float 值。对于您分享的示例,您的预期结果是什么?
猜你喜欢
  • 2018-05-17
  • 2018-12-19
  • 2015-05-16
  • 1970-01-01
  • 2019-02-22
  • 2017-07-16
  • 2020-12-22
  • 2018-10-27
  • 2014-04-15
相关资源
最近更新 更多