【问题标题】:ValueError: could not convert string to float: 'Y'ValueError:无法将字符串转换为浮点数:'Y'
【发布时间】:2020-11-17 10:43:18
【问题描述】:

当我尝试将对象类型列转换为浮点数时,我收到了ValueError: could not convert string to float: 'Y'

import pandas as pd
import numpy as np

df_train = pd.read_csv('loan_prediction/train_u6lujuX_CVtuZ9i.csv')
df_train_y = df_train.iloc[:, 12].values

df_train_y.astype(float)

【问题讨论】:

标签: python pandas


【解决方案1】:

这可能会帮助您找到数据集中的非数字值。

首先,创建一个数据框,并将第 12 列的某些元素设置为非数值:

import numpy as np
import pandas as pd

nrows, ncols = (10, 15)
data = np.arange(nrows * ncols).reshape((nrows, ncols))
df = pd.DataFrame(data)

df.iloc[2:5, 12] = 'x'

其次,提取第12列,转换为数值类型:

df_2 = df.iloc[:, 12].copy()
df_2 = pd.to_numeric(df_2, errors='coerce')

第三,查找非数字值(带有布尔掩码):

mask = df_2.isna()
print(df[mask].iloc[:, 12])

2    x
3    x
4    x
Name: 12, dtype: object

【讨论】:

  • 感谢 jsmart。使用上面的代码,我发现我的数据类型在我的第 12 列中是一个对象。但是如何将这些对象数据转换为整数或浮点数?
  • 如果你执行pd.to_numeric('12', errors='coerce'),那么你会得到12(作为一个整数)。但是如果你执行pd.to_numeric('abc', errors='coerce'),那么你会得到'nan'(不是一个数字)——因为'abc'不是一个数字的字符串表示。 errors='coerce' 返回一个数字(如果转换成功),否则返回 nan。
  • 程序为第 12 列的所有索引返回 nan。但我希望将所有字符串值更改为数字。
  • 您好,您可以发布数据文件的前 10 行或 20 行吗?
猜你喜欢
  • 1970-01-01
  • 2019-03-23
  • 2018-06-13
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
相关资源
最近更新 更多