我有一个带有浮子和NAN的列的数据框架。这些是电话号码,看起来很奇怪,因为浮子最终获得了" .0",并且电话号码看起来像这55551981180099.0)。我尝试使用 df['phone'].astype(int)
来解决这个问题,但是它会用nans错误,并且我得到了"不能将nas转换为int"错误。
所以我对此进行了残酷的力量:
for i in range(len(df.index)):
if pd.isnull(df['phone'][i]) == False:
df['phobe'][i] = int(df['phone'][i])
但是当我print(type(df['phone'][i]))
时,它告诉我它仍然是class 'numpy.float64'
。
我尽一切努力将其转变为其他东西,以使电话号码看起来不错(变成字符串,然后将两个字符取出,应用astype(str)(str),astype(int)(int)等),但似乎无效。
有什么建议?
如果您的NaN
值带有int
,则设计所有值均转换为float
s。
您可以将NaN
替换为某些int
,然后可能将列转换为int
。
df['phone'] = df['phone'].fillna(0).astype(int)
或首先删除NaN
行:
df = df.dropna(subset=['phone'])
df['phone'] = df['phone'].astype(int)
或将所有值替换为str
,然后删除.0
,然后获取字符串NaN
(不丢失值):
df['phone'] = df['phone'].astype(str).str.replace('.0', '')
最后,如果需要,请删除最后2个字符使用str:
的索引df['phone'] = df['phone'].astype(str).str.replace('.0', '').str[:-2]