如何使用python将列中的dtype从object更改为float64?

时间:2020-05-24 19:16:38

标签: python pandas dataframe

我从 投资 中提取了一些数据,但是列值都是 dtype = object ,因此我无法使用它们... 我应该如何将对象转换为浮动

2558 6.678,08 2557 6.897,23 2556 7.095,95 2555 7.151,21 2554 7.093,34 ... 4 4.050,38 3 4.042,63 2 4.181,13 1 4.219,56 0 4.223,33 Name: Alta, Length: 2559, dtype: object

我想要的是: 2558 6678.08 2557 6897.23 2556 7095.95 2555 7151.21 2554 7093.34 ... 4 4050.38 3 4042.63 2 4181.13 1 4219.56 0 4223.33 Name: Alta, Length: 2559, dtype: float

试图使用a函数代替。

def clean(x): x = x.replace(".", "").replace(",",".")

但是它 无效,因为dtype是object

谢谢!

3 个答案:

答案 0 :(得分:0)

请参阅:How to convert datatype:object to float64 in python?

for i in range(0, len(df.columns)):
    df.iloc[:,i] = pd.to_numeric(df.iloc[:,i], errors='ignore')
    # errors='ignore' lets strings remain as 'non-null objects'

这可以将所有数值转换为float64或int64。

答案 1 :(得分:0)

要替换您的值,请尝试此操作。结果是您的数据框,col是您的列名

result[col] = result[col].apply(lambda x: x.str.replace(".","").str.replace(",","."))

如果您需要将此变量转换为浮点数,请尝试

result[col] = result[col].astype(float)

答案 2 :(得分:0)

如果您的语言环境使用逗号作为小数点,则可以使用locale.atof(如果不是,则首先必须设置适当的语言环境):

>>> s = pd.Series(['6.678,08','6.897,23'], name='Alta')
>>> s
0    6.678,08
1    6.897,23
Name: Alta, dtype: object
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, '')
'de_DE.UTF-8'
>>> s.apply(locale.atof)
0    6678.08
1    6897.23
Name: Alta, dtype: float64