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

zbsbpyhn  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(201)

我的数据集中有一系列的负字符串。我想把它们转换成负浮点数,但是得到了ValueError: could not convert string to float: '-'。我想编码格式有问题,所以我试着用Unicode -连字符替换-,但是还是得到了同样的错误。
我试过用普通的连字符替换所有可能的Unicode代码,但没有成功。
我使用的是Python 3.8.1和Pandas1.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='..')

然后我尝试将'Lat.'列中字符串转换为浮点数

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

i7uq4tfw1#

问题是至少有一个'-'值。就是这样,只有一个连字符,后面没有数字。
您可以执行以下操作:

import numpy as np

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

那么这将工作:

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

erhoui1w2#

如果仍然出现错误,可以使用强制pd.to_numeric将非数字元素转换为NaN。

import pandas as pd

df['Lat.'] = pd.to_numeric(df['Lat.'],errors='coerce')

相关问题