Python/Pandas用nan将电话号码从float转换为int

2024-10-03 21:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有float和nan列的数据帧。 这些是电话号码,它们看起来很奇怪,就像浮动的一样(它最后得到一个“.0”,电话号码看起来像这个5551981180099.0)。我试图使用df['phone'].astype(int)来解决这个问题,但是它与nan有错误,我得到了一个“cannotconvertnastoint”错误。在

所以我带着这个去了残酷的力量:

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)、astype(int)等),但似乎没有任何效果。在

有什么建议吗?在


Tags: 数据indfforlen错误phone电话号码
1条回答
网友
1楼 · 发布于 2024-10-03 21:35:05

如果您有NaN值与int,那么根据设计,所有值都将转换为floats

您可以将NaN替换为某些int,然后可以将列转换为int。在

df['phone'] = df['phone'].fillna(0).astype(int)

或先删除NaN行:

^{pr2}$

或者将所有值替换为str,然后删除.0,然后得到字符串NaN(不缺少值):

df['phone'] = df['phone'].astype(str).str.replace('\.0', '')

如果需要删除最后2个字符,请使用indexing with str

df['phone'] = df['phone'].astype(str).str.replace('\.0', '').str[:-2]

相关问题 更多 >