【发布时间】: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') ?