我从 投资 中提取了一些数据,但是列值都是 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
谢谢!
答案 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