Python 编号后带有减号的CSV文件&引用;ValueError:无法将字符串转换为float:";

Python 编号后带有减号的CSV文件&引用;ValueError:无法将字符串转换为float:";,python,pandas,csv,valueerror,Python,Pandas,Csv,Valueerror,我有几个CSV文件,其中显示的是负数,数字后面有减号(30.50-而不是-30.50)。如果我尝试将列转换为整数,Python将返回一个ValueError(ValueError:无法将字符串转换为float:'30.50-') 有人知道怎么处理吗 提前谢谢 最好的, Moritz由于您的字符串格式无效,无法转换为浮点,您首先需要使用将-从右侧删除,并将其添加到前面,以使其正确无误。 例如: df = pd.DataFrame({'a':['1.5-','1.7','2.0','4.1-']})

我有几个CSV文件,其中显示的是负数,数字后面有减号(30.50-而不是-30.50)。如果我尝试将列转换为整数,Python将返回一个ValueError(
ValueError:无法将字符串转换为float:'30.50-'

有人知道怎么处理吗

提前谢谢

最好的,
Moritz

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

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
像这样:

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

请将示例输入与预期输出共享。因为
30.50-
不是有效数字,您希望它返回什么?您可能需要从右侧剥离
-
并单独处理它。它对于前两个CSV非常有效,但对于其中一个CSV,我收到以下错误消息:“TypeError:“float”对象不可下标”,即使列的类型为“object”。当值突然没有小数点时,会出现错误(“1.000”现在是“1”)。你知道怎么处理吗?