拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 汇入带有引号的数字列的csv档案/作为字符串

汇入带有引号的数字列的csv档案/作为字符串

白鹭 - 2022-02-22 2000 0 0

我在一些 csv 档案中遇到了这个问题,其中我有数字和非数字列。

就我所见,Read.csv 将所有内容作为字符串汇入,因为数字是单引号,数字列显示为“149.0”或“149,0”。在这种情况下,我想洗掉该参考以便以后能够进行转换。

当我有像一百万这样的数字时,它们看起来像这样:1.000,000

所以系统知道他需要参考或否则它将是另一个栏位(因为第二个逗号不是一个点),我收到这些讯息:

- 标记资料时出错。C 错误:第 129 行中应有 1 个栏位,看到 2 个

- 无法将字符串转换为浮点数:'1.103.700'

我怎样才能让 Python 理解或剥离/改变这种行为,以便已经可以汇入数字列?

我尝试了不同的方法,例如 quoting=2 (NON NUMERIC) 、 astype(float)、 pd.replace ..... 没有任何效果。

我不知道我是用错误的命令读取档案还是什么。

请问你能帮帮我吗?例如,有此问题的一列是 ccaavacunas.iloc[:,[3]]

该档案在这里:汇入带有引号的数字列的 csv 档案/作为字符串

uj5u.com热心网友回复:

如果您应用转换器功能,则可以将资料转换为正确的型别。有关更多详细信息,请参见此处:https : //pandas.pydata.org/docs/reference/api/pandas.read_csv.html?highlight=read_csv

import pandas as pd


def converter_function(value_to_convert):
    # Replace "," with "." and assign to a new variable
    converted_value = value_to_convert.replace(",", ".")

    # Check if there is more than one occurrence of "."
    if converted_value.count(".") > 1:
        converted_value = converted_value.replace(".", "")

    # Convert to float type if value allows, if not return the original value
    converted_value = float(converted_value) if converted_value.replace('.', '', 1).isdigit() else value_to_convert

    return converted_value


ccaavacunas = pd.read_csv("ccaa_vacunas.csv", keep_default_na=True, delimiter=',', decimal='.', quoting=1,
                          converters={
                              'Dosis entregadas Pfizer': converter_function,
                              'Dosis entregadas Moderna': converter_function,
                              'Dosis entregadas AstraZeneca': converter_function,
                              'Dosis entregadas Janssen': converter_function,
                              'Dosis entregadas totales': converter_function,
                              'Dosis administradas': converter_function,
                              'Porcentaje de dosis administradas por 100 habitantes': converter_function,
                              'Porcentaje sobre entregadas': converter_function,
                              'Personas con pauta completa': converter_function,
                              'Porcentaje con pauta completa': converter_function,
                          })
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *