首页 > 解决方案 > 替换 , 为 . 在熊猫数据框中进行类型转换之前

问题描述

我从 .csv 中获得了一个数据框,其中包含一个带有数值的列,但是它们是使用 a 编写的,而不是 a .. 我试图在转换值之前更改它,但我猜我缺乏 Python 技能让我做出扭曲假设,因为这似乎不起作用。

df['score'] = df['score'].replace(',', '.')
df['score'].astype('float64')

我在这里做错了什么?

标签: pythonpython-3.xpandas

解决方案


如https://stackoverflow.com/a/56114791/5666087中所写并在文档中描述pandas.read_csv,您应该使用

import pandas as pd

pd.read_csv(path_to_csv, decimal=",")

该文件指出

十进制 : str, 默认'.'

识别为小数点的字符(例如','用于欧洲数据)。

这是一个例子

import io
import pandas as pd

data = """
item,cost
book,"19,99"
coffee,"2,50"
"""

df = pd.read_csv(io.StringIO(data), decimal=",")
df.head()
#      item   cost
# 0    book  19.99
# 1  coffee   2.50

df.dtypes
# item     object
# cost    float64
# dtype: object

推荐阅读