python - 当我在 Python 中有小数点和一千个逗号时,如何更改数据类型?
问题描述
拜托,我需要将“销售”列更改为数字格式。
import pandas as pd
data = {'Sale':['9.455', '34,65%', '234.12', '32.6%','3,5%']}
df = pd.DataFrame(data)
df.dtypes
我需要得到以下结果
[9455, 0.3465, 23412, 0.326,0.035]
非常感谢雨果,
解决方案
你可以使用pandas.to_numeric + numpy.where:
values = pd.to_numeric(df.Sale.str.replace("[.%]", "").str.replace(",", "."))
result = np.where(df.Sale.str.contains("%"), values / 100, values)
print(pd.Series(result))
输出
0 9455.0000
1 0.3465
2 23412.0000
3 3.2600
4 0.0350
dtype: float64
该行:
values = pd.to_numeric(df.Sale.str.replace("[.%]", "").str.replace(",", "."))
经过一些预处理后将字符串转换为数值,然后:
result = np.where(df.Sale.str.contains("%"), values / 100, values)
基本上将数字除以100
百分比值。
推荐阅读
- php - 重写规则在测试器中有效,但在 .htaccess 中无效
- c++ - SFML: 错误: ')' 标记之前的预期主表达式
- azure-data-catalog - 我们可以重命名标签吗?
- php - 如何使用 PHP 在 AD 安全组中搜索成员
- javascript - 嵌套数组中的 JavaScript 循环(新手)
- java - IntelliJ IDE 中带有 Gauge 的 Maven 缺少文件夹
- c# - 无法对从 MessageResource.CreateAsync 返回的 Twilio MessageResource 对象进行 Json 序列化
- mysql - 有没有办法在不使用括号中的条件的情况下编写此查询?
- scala - scala:使用不需要类型的类型参数的类方法
- reactjs - 在反应中使用相同启动路径制作多条路线的方法是什么