【问题标题】:Converting currency to numeric value将货币转换为数值
【发布时间】:2022-12-03 14:37:14
【问题描述】:
由于它们是对象格式,我试图通过将我的 df 中的价格转换为数值来创建一个新变量。
我试图从列中的数字中删除“,”和“$”,然后使用 pd.to_numeric 将它们转换为不同的类型
df_l['price_MXN2'] = df_l['price_MXN'].str.replace(',','')
df_l['price_MXN2'] = df_l['price_MXN'].str.replace('$','')
df_l['price_MXN2'] = pd.to_numeric(df_l['price_MXN2'])
我收到“ValueError:无法解析位置 0 处的字符串”
【问题讨论】:
标签:
pandas
currency
converters
dtype
【解决方案1】:
看起来您正在尝试将货币字符串转换为 Pandas DataFrame 中的数值。错误消息“ValueError: Unable to parse string at position 0”表示 to_numeric() 方法无法解析 price_MXN2 列中第一个位置(索引 0)的字符串。
此错误的一个可能原因是 price_MXN2 列包含无效字符或非数字值。您可以使用 df_l['price_MXN2'].unique() 方法检查 price_MXN2 列中的值,该方法将返回该列中所有唯一值的数组。
如果 price_MXN2 列包含无效字符或非数字值,您可以使用 pd.to_numeric() 方法并将 errors 参数设置为 'coerce' 以将值转换为数字,同时忽略或替换任何无效字符。这是一个例子:
# Convert the price_MXN2 column to numeric, ignoring any invalid values
df_l['price_MXN2'] = pd.to_numeric(df_l['price_MXN2'], errors='coerce')
这会将 price_MXN2 列转换为数字,任何无效值都将替换为 NaN。然后,您可以使用 df_l.dropna() 方法从 DataFrame 中删除任何具有缺失值的行。