【问题标题】:Multiply by a float in pandas -> numbers with comma disappearing [duplicate]乘以熊猫中的浮点数->逗号消失的数字[重复]
【发布时间】:2019-04-30 05:49:53
【问题描述】:

我在 Pandas 中应用货币汇率时遇到问题。 当某些数字包含逗号时,它们将被转换为“nan”,例如:1,789 将被视为 nan。

我从那个代码开始:

import pandas as pd
usd_rate = 0.77
salary = pd.read_csv("salary.csv")

#create revenue clean (convert usd to gbp)
salary['revenue_gbp'] = salary.usd_revenue * usd_rate

所以我得到了那个错误:

TypeError: 不能将序列乘以“浮点”类型的非整数

我读过您不能将列乘以浮点数。所以我将我的列转换为数字:

salary.net_revenue = pd.to_numeric(salary.usd_revenue, errors='coerce')
salary['revenue_gbp'] = salary.usd_revenue  * usd_rate 

现在我没有任何错误,但是当我查看我的文件时,所有高于 999.99 的数字 - 所以包含逗号的数字 - 都放在“nan”下面...

我认为这可能是翻译问题..但我在这里感到困惑.. 有任何想法吗 ?

非常感谢

【问题讨论】:

  • 分享您的数据和列 dtypes
  • 你的salary['usd_revenue']列的数据类型是什么?你可以通过salary.usd_revenue.dtype检查这个应该是float或者int,但是你的可能是text field,这就是它给出这个错误的原因。
  • 您的代码适用于我前提是 CSV 文件包含数字类型。您的错误消息表明 salary.usd_revenue 正在按顺序读入。您需要进一步解析以提取您希望相乘的数字。
  • 所以我检查了 dtype 并且我有 Out : dtype('O') ?

标签: python pandas


【解决方案1】:

usd_revenue 可能还不是数字类型。试试这个:

salary['usd_revenue'] = 薪水['usd_revenue'].map(float)

在您的实际线路之前:

salary['revenue_gbp'] = Salary.usd_revenue * usd_rate

【讨论】:

  • 谢谢!我已经尝试过了,但又遇到了另一个错误:ValueError: invalid literal for float(): 1,767.260006 我很困惑
  • 在这种情况下,尝试使用salary['usd_revenue'] = pd.numeric(salary['usd_revenue'])
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多