提问人: 提问时间:10/22/2022 更新时间:10/22/2022 访问量:676
如何修复 TypeError:当 df 中的列有 nan 时,无法将系列转换为 <class 'float'>?
How do I fix TypeError: cannot convert the series to <class 'float'> when column in df has nan?
问:
我有一个数据帧
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>内存”
答:
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/......
评论
dfooc['AddressId'] = dfooc['AddressId'].astype(float)
dfooc['AddressId'] = dfooc['AddressId'].astype(float,errors='ignore')