Python 尝试将数据帧列转换为浮点时发生ValueError

Python 尝试将数据帧列转换为浮点时发生ValueError,python,pandas,Python,Pandas,我正在尝试将下面我的dataframedf的Yield\u pct列下的所有数据转换为浮点类型,但在这样做时面临问题。我得到错误ValueError:无法将字符串转换为float:'na',因此我添加了行if row1['Yield\u pct']!='na':添加到下面的代码中,但添加这一行后,我会收到相同的错误 Date Maturity Yield_pct Currency 0 1986-01-01 0.25

我正在尝试将下面我的dataframe
df
Yield\u pct
列下的所有数据转换为浮点类型,但在这样做时面临问题。我得到错误
ValueError:无法将字符串转换为float:'na'
,因此我添加了行
if row1['Yield\u pct']!='na':
添加到下面的代码中,但添加这一行后,我会收到相同的错误

              Date      Maturity      Yield_pct Currency
0       1986-01-01          0.25             na      CAD
1       1986-01-02          0.25   0.0948511020      CAD
2       1986-01-03          0.25   0.0972953210      CAD
3       1986-01-06          0.25   0.0965403640      CAD
4       1986-01-07          0.25   0.0953292440      CAD


for (i1, row1) in (df.iterrows()):
    if row1['Yield_pct'] != 'na':
        row1['Yield_pct'] = float(row1['Yield_pct'])
        if isinstance(row1['Yield_pct'], float)==1:
            print('SUCCESS')
        else:
            print('FAILURE')
多谢各位

编辑:这是数据帧的下部
df

920538  2015-01-19  empty string                     CAD
920539  2015-01-20  empty string                     CAD
920540  2015-01-21  empty string                     CAD
920541  2015-01-22  empty string                     CAD
920542  2015-01-23  empty string                     CAD
920543  2015-01-26  empty string                     CAD
我现在使用的代码:

df = update('CAD')[0]
for (i1, row1) in (df.iterrows()):
    df = df.convert_objects(convert_numeric=True)
    if isinstance(row1['Yield_pct'], float)==1:
        print('SUCCESS')
    else:
        print('FAILURE')
只需使用,它会将任何无效值强制转换为
NaN

In [75]:
df = df.convert_objects(convert_numeric=True)
df

Out[75]:
         Date  Maturity  Yield_pct Currency
0  1986-01-01      0.25        NaN      CAD
1  1986-01-02      0.25   0.094851      CAD
2  1986-01-03      0.25   0.097295      CAD
3  1986-01-06      0.25   0.096540      CAD
4  1986-01-07      0.25   0.095329      CAD

你的问题是什么?请注意,您的错误表示无法将字符串“na”转换为浮点。您缺少代码中“na”之前的空格。这是一个起点。
convert\u对象
可以处理空对象strings@EdChum非常感谢。但是,当我尝试这个
失败时
仍然会被打印出来。请用你尝试过的代码编辑你的问题,现在不起作用。我不知道你为什么反复调用
convert\u objects
,在调用
convert\u objects
后,你只需要调用它一次,也就是当你声称它失败时,
df.info()
show?你可能会得到你认为是错误的东西,因为
dtype
实际上是
np.float64
我不知道这是件事。“太好了!”埃德楚姆,谢谢你。但是当我尝试使用行
df=df.convert\u objects(convert\u numeric=True)row1['Yield\u pct']=float(row1['Yield\u pct'])
时,我不知道这是为什么。我不理解您的注释,使用
convert\u objects
您不需要任何进一步的说明casting@EdChum不幸的是,列中的所有数据都是字符串,因此,我仍然需要将它们转换为
float
,因此我使用
row1['Yield\u pct']=float(row1['Yield\u pct'])
。如果我单独使用
df=df.convert\u对象(convert\u numeric=True)
,我将无法满足此要求。
df['Yield\u pct']=df['Yield\u pct'].astype(np.float64)
有效吗?如果它不起作用,那是因为你有一些奇怪的值,你没有在你的样本数据中显示出来,你能发布这个吗