您需要找到第 259-368 行范围内的 sum 列的总和。为此,您需要将列类型更改为 int 或 float。但它给出了错误 ValueError: Could not conversion string to float: '11\xa0693,70' https://drive.google.com/drive/folders/1Gvg1WdBLdaXmLraoslhHn1PG1P4jqiYH
import numpy as np
import pandas as pd
df = pd.read_csv("data.csv")
#print(test.index)
#print(test.columns)
df['sum'] = df['sum'].astype(float).fillna(0)
general_sum = df.loc[259:368, 'sum'].sum()
print(sum1)
符号
\xa0
是 nbsp,不间断空格。它在数字中使用,而不是通常的空格(千位分隔符),以便在文本中数字
11 693,70
不会被换行符分成两个数字11
和693,70
。而库函数通常只知道规则空间,而不知道它在 ASCII7 之外的许多变体。
如何修复:在将字符串转换为数字之前,您需要转换字符串(即整个 csv 文件),将所有可能的空格替换为常规空格。在实践中,当处理俄语文本时,我总是对仅仅一个 nbsp 的转换感到满意。
在此类问题中,您需要提供原始数据的示例,以便可以重现问题。通常,使用
pd.to_numeric
指定错误处理的方法。例如:除了@ESkri 的绝对正确答案之外,我还将添加技术部分。
删除
\xa0
是关键,但在替换字符之前必须先将列中的所有值转换为 str 类型,并且在转换为浮点之前还要将逗号替换为点。