我在一些 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]]
该档案在这里:
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 评论