首页 > 解决方案 > 当我在 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]

非常感谢雨果,

标签: pythonpandas

解决方案


你可以使用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百分比值。


推荐阅读