如何修复 TypeError:当 df 中的列有 nan 时,无法将系列转换为 <class 'float'>?

How do I fix TypeError: cannot convert the series to <class 'float'> when column in df has nan?

提问人: 提问时间:10/22/2022 更新时间:10/22/2022 访问量:676

问:

我有一个数据帧

dfooc
Name AddressId
XYZ  nan
ABC  <memory at 0x7f145136ca10>
HIJ  nan

如何将此 AddressId 列转换为浮点型? 它目前是 -

Name: AddressId, Length: 346498, dtype: object

我试过了

dfooc['AddressId'] = int(float(dfooc['AddressId']))
raise TypeError(f"cannot convert the series to {converter}")

TypeError: cannot convert the series to <class 'float'>

我将其转换为浮点数,因为如果我让它保持原样,我将无法将此列数据获取到 SQL 服务器中,我猜测这是因为 SQL 服务器不喜欢“<0x7f145136ca10>内存”

python pandas 类型错误 精度

评论

1赞 Bushmaster 10/22/2022
用:dfooc['AddressId'] = dfooc['AddressId'].astype(float)
0赞 10/22/2022
@Clegane,这给出了 ValueError: could not convert string to float: '<memory at 0x7f145136ca10>'
1赞 Bushmaster 10/22/2022
okey,使用:dfooc['AddressId'] = dfooc['AddressId'].astype(float,errors='ignore')
0赞 10/22/2022
感谢@Clegane这奏效了。我在 stackoverflow.com/questions/74158199/ 也有类似的问题......

答:

0赞 Adrien Riaux 10/22/2022 #1

你可以做:

dfooc['AddressId'] = dfooc['AddressId'].astype('float', errors = 'ignore')

errors根据文档,控制对提供的 dtype 的无效数据引发异常,设置为 ,它将抑制异常,并在出错时返回原始对象(即 NAN)。ignore

或者你可以先fillna,然后将级数转换为float:

dfooc['AddressId'].fillna(0, inplace = True)
dfooc['AddressId'] = dfooc['AddressId'].astype('float')

评论

0赞 10/22/2022
不幸的是,我无法在不影响最终输出的情况下推算数据。但是 fooc['AddressId'] = dfooc['AddressId'].astype('float', errors = 'ignore') 有效。我有一个类似的问题,但日期列在 stackoverflow.com/questions/74158199/......