【问题标题】:Issue trying converting object to numeric尝试将对象转换为数字时出现问题
【发布时间】:2020-07-10 06:09:40
【问题描述】:

我是 python 新手,所以对任何高级的 dum qa 表示歉意, 我想将 csv 作为数据框导入 pandas,做一些“df.groupby”(基于“mean”),并与其他数据框合并, 问题是“平均值”的值被视为一个对象: 植物对象 组件 int64 PerUnitPrice 对象 >> 这就是我所说的 数据类型:对象 Traceback(最近一次调用最后一次):

我确实尝试使用 '.astype(float)' 进行转换 - 出现错误 与 : price_['PerUnitPrice'] = pd.to_numeric(price_['PerUnitPrice'],errors='coerce') 部分起作用->>它将所有大于999的值设置为Nan,至少我认为它是这样做的

这是我正在导入的 csv 中的一些行:


csv lines

【问题讨论】:

  • 您是否尝试过使用数千个="," 作为 read_csv() 方法的参数来指示千位分隔符?
  • 不描述代码,分享代码;不要截图数据,提供数据的文本样本。一旦你这样做了,人们将能够帮助你,而不必猜测问题是什么。
  • 请提供minimal reproducible example,以及完整的错误消息。

标签: python pandas


【解决方案1】:

从 .csv 读入数据似乎有问题。查看您共享的 .csv 图像,PerUnitPrice 列中有千个分隔符(逗号)(这导致该列被错误地解析)。

在您的pd.read_csv 调用中,设置thousands=True,并使用字典指定dtype,如the documentation for read_csv。在你的情况下,我想你会想要使用{'Plant' : str, 'Component' : str, 'PerUnitPrice' : float}

调试此类问题的技巧是使用pd.DataFrame 中的the info() method 来检查DataFrame 的dtypes、大小和非空值。

【讨论】:

  • 感谢您的帮助,(thousands="," ) 成功了,很棒的平面格式 (StackOverflow) 和很好的帮助,干杯
  • 嗨,附加的链接正在循环回我的帖子,我错过了什么吗?
  • @Eraz 抱歉,这里是正确的链接:stackoverflow.com/help/someone-answers
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
相关资源
最近更新 更多