数字后带有减号的 CSV 文件。 “ValueError:无法将字符串转换为浮点数:”

     2023-03-12     255

关键词:

【中文标题】数字后带有减号的 CSV 文件。 “ValueError:无法将字符串转换为浮点数:”【英文标题】:CSV File with minus sign after number. "ValueError: could not convert string to float:" 【发布时间】:2020-09-16 01:02:39 【问题描述】:

我有几个 CSV 文件,其中一个负数显示在数字后面带有减号(30.50- 而不是 -30.50)。如果我尝试将列转换为整数,Python 会返回 ValueError (ValueError: could not convert string to float: '30.50-')

有人知道如何处理吗?

提前致谢!

最好, 莫里茨

【问题讨论】:

请分享一个带有预期输出的示例输入。 因为30.50- 不是一个有效的数字,你期望它返回什么?您可能需要从右侧剥离 - 并单独处理它 【参考方案1】:

由于您的string 的格式无效,无法转换为float,您首先需要使用rstrip 从右侧删除- 并将其添加到前面以使其正确。 例如:

df = pd.DataFrame('a':['1.5-','1.7','2.0','4.1-'])
df.a.apply(lambda x: '-'+(x.rstrip('-')) if x[-1] =='-' else x).astype(float)
0   -1.5
1    1.7
2    2.0
3   -4.1
Name: a, dtype: float64

【讨论】:

【参考方案2】:

像这样:

In [141]: df = pd.DataFrame('A':['30.50-', '20', '-10.01','22.10-'])
In [142]: df 
Out[142]: 
        A
0  30.50-
1      20
2  -10.01
3  22.10-

In [143]: df['A'] = df['A'].apply(lambda x: '-'+ (x.rstrip('-')) if x.endswith('-') else x).astype(float) 

In [145]: df 
Out[145]: 
       A
0 -30.50
1  20.00
2 -10.01
3 -22.10

In [144]: df.dtypes 
Out[144]: 
A    float64
dtype: object

【讨论】:

它对前几个 CSV 非常有效,但对于一个我收到以下错误消息:“TypeError: 'float' object is not subscriptable”,即使该列的类型是 Pandas type “object ”。当值突然不再有小数点时出现错误(“1.000”现在是“1”)。你知道如何处理吗?

带有加号或减号的 DAX 数字格式

】带有加号或减号的DAX数字格式【英文标题】:DAXnumberformatwithaplusorminussign【发布时间】:2019-01-2615:12:17【问题描述】:我想格式化DAX度量,以便值0.105显示为+10.5%,值-0.105显示为-10.5%。对我来说重要的是加号。我使用FORMAT(measure... 查看详情

SAS - 从带有科学计数法数字的csv文件导入时如何保留实际数字

】SAS-从带有科学计数法数字的csv文件导入时如何保留实际数字【英文标题】:SAS-howtopreserveactualnumberswhenimportingfromacsvfilewithnumbersinscientificnotation【发布时间】:2012-04-0621:53:53【问题描述】:当我将具有长数字ID的文件从csv文件导... 查看详情

为啥熊猫转换后在csv文件的开头添加数字[重复]

】为啥熊猫转换后在csv文件的开头添加数字[重复]【英文标题】:WhydoesPandasaddnumbersatbeginningofcsv-fileafterconverting[duplicate]为什么熊猫转换后在csv文件的开头添加数字[重复]【发布时间】:2019-10-2404:55:48【问题描述】:我是一名Python... 查看详情

使用VBA为负数设置带有千位分隔符、2位小数和减号的标准数字格式?

...用VBA为负数设置带有千位分隔符、2位小数和减号的标准数字格式?【英文标题】:Setstandardnumberformatwiththousandseparator,2decimalsandminussignfornegativenumbersusingVBA?【发布时间】:2015-01-2111:35:40【问题描述】:我在***上看到过之前提出的... 查看详情

csv文件保存数字为文本形式后再次打开后数字任然显示为科学计数法的问题?

大家知道CSV文件或者excel文件单元格内输入超过12位的数字时候会显示成科学计数法,看到网上提供了不少解决方法,比如在数字前面加上英文单引号',还可把单元格的格式设置为文本格式就会看到正常的数字,但是文件在保... 查看详情

Jasper Report 以 CSV 格式导出带有科学计数法的数字

】JasperReport以CSV格式导出带有科学计数法的数字【英文标题】:JasperReportexportsnumberswithscientificnotationinCSV【发布时间】:2019-03-2615:13:43【问题描述】:我有一个使用bean集合作为数据源的Jasper报告。我有一个Java应用程序,它使用... 查看详情

导入包含逗号、千位分隔符和尾随减号的 CSV 数据

】导入包含逗号、千位分隔符和尾随减号的CSV数据【英文标题】:ImportingCSVdatacontainingcommas,thousandseparatorsandtrailingminussign【发布时间】:2011-07-1917:58:11【问题描述】:MacOSX上的R2.13.1。我正在尝试导入一个数据文件,其中包含一个... 查看详情

vb.net导出csv后数字格式问题

用vb.net编程,将datagridview导出csv文件,用excel打开后,纯数字的数据都变成了数字格式的,如“001”变成了“1”,但是用记事本打开显示的是“001”,请问该怎么处理一下能将datagridview单元格的类型改一下可以吗?如何改?参考... 查看详情

在 Firebird 中输出带有触发器的 CSV 文件

】在Firebird中输出带有触发器的CSV文件【英文标题】:OutputCSVfilewithtriggerinFirebird【发布时间】:2017-04-1318:34:48【问题描述】:是否可以创建一个触发器,在表2更新后立即输出CSV文件,从表1中选择字段1?我尝试过使用CREATEORALTERtr... 查看详情

如何使用 pandas.read_csv 在双引号之间读取带有千位分隔符的数字 [重复]

...如何使用pandas.read_csv在双引号之间读取带有千位分隔符的数字[重复]【英文标题】:Howtoreadnumberswiththousandsseparatorbetweendoublequoteusingpandas.read_csv[duplicate]【发布时间】:2021-02-1804:52:40【问题描述】:我有一个这样的csv文件(data.csv):... 查看详情

关于excel另存为csv文件数字的问题?

...把excel另存为csv格式文件才可以导入,但是对于比较长的数字。以常规格式保存会,自动变成科学计数法,1.06E+14的样子,与数据库中的数据类型不匹配。必须是一串数字才可以。我又试着以文本和数字类型另存为。还是偶尔会... 查看详情

Javascript 正则表达式到数字/十进制和减号

】Javascript正则表达式到数字/十进制和减号【英文标题】:JavascriptRegextodigit/decimalandminussign【发布时间】:2014-04-1922:39:42【问题描述】:在我的网络表单文本框中,我只想允许小数点后只有2位的数值,并且数字前可以有负号(减... 查看详情

从 html 表单发送带有 csv 附件的电子邮件

】从html表单发送带有csv附件的电子邮件【英文标题】:Sendinganemailwithacsvattachmentfromanhtmlform【发布时间】:2022-01-1707:45:02【问题描述】:我刚开始编程,并尝试使用php发送一封带有csv文件作为附件的电子邮件。现在,按“提交”... 查看详情

将一堆 csv 文件合并为一个带有标题的文件

】将一堆csv文件合并为一个带有标题的文件【英文标题】:Mergingabunchofcsvfilesintoonewithheaders【发布时间】:2015-10-2921:42:12【问题描述】:我有几个csv文件我想合并为一个列表,然后输出为一个合并的csv。假设这些文件被称为file1.c... 查看详情

选择带有减号和总和的查询

】选择带有减号和总和的查询【英文标题】:Selectquerywithminusandsum【发布时间】:2021-07-1503:56:43【问题描述】:有3个表:user、project和tracking。这是tracking的表格:iduser_idproject_idstart_timeend_time12332128121243212131712577631011126771213171271512... 查看详情

关于excel保存为csv格式后,重新打开文本型数字变为科学计数,且15位后面变成0??

...,然后在下面的各列的数据格式中,选择你有那个一长串数字的列,选择其类型为”文本“…… 查看详情

更改 CSV 文本中的数字区域设置格式(在数字中用逗号交换点)

】更改CSV文本中的数字区域设置格式(在数字中用逗号交换点)【英文标题】:ChangenumberlocaleformatinCSVtext(swapdotwithcommainnumbers)【发布时间】:2014-03-3010:06:57【问题描述】:我有一个带有逗号分隔字段的文本文件。数字字段值被双... 查看详情

plsql导出csv数据是空白

...出CSV文件格式数据后,用EXCEL打开文件显示是乱码或者长数字串变成了科学计数法。这并不是导出的CSV文件数据有问题,如果使用记事本或其他编辑器如EDITPLUS打开文件,会发现数据是正常的。一、解决显示乱码问题用EXCEL打开文... 查看详情