Python / Pandas-与NAN的列中的电话号码从浮点转换为INT



我有一个带有浮子和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,则设计所有值均转换为floats。

您可以将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]

最新更新