如何在熊猫的浮点数中转换负字符串?

时间:2020-03-18 22:18:14

标签: python pandas

我的数据集中有一系列否定字符串。我想将它们转换为负浮点数,但是得到ValueError: could not convert string to float: '-'。我想编码格式存在问题,因此我尝试将-替换为Unicode -连字符,但还是遇到了相同的错误。

我试图用普通的连字符替换所有可能的Unicode代码,但是没有用。

我使用Python 3.8.1和pandas 1.0.2。

有没有解决方法?

P.S。有一个类似的问题here,但没有帮助。

这是我所做的: 数据集为here。名为“ 1240K + HO”,扩展名为.anno。

然后:

# open file
df = pd.read_table('v42.4.1240K_HO.anno', index_col=0, usecols=['Index', 
                                                                'Instance ID',
                                                                'Master ID', 
                                                                'Average of 95.4% date range in calBP (defined as 1950 CE)',
                                                                'Country',
                                                                'Lat.',
                                                                'Long.'],
                   na_values='..')

然后我尝试在“纬度”中转换字符串。列以浮点数字。

# convert strings to floats
df['Lat.'] = df['Lat.'].astype(float)

1 个答案:

答案 0 :(得分:1)

问题在于,至少有一个'-'值。就是这样,只是一个连字符,后面没有数字。

您可以这样做:

import numpy as np

df['Lat.'] = df['Lat.'].replace('-',np.nan)

这将起作用:

df['Lat.'] = df['Lat.'].astype(float)