将 pandas 值转换为 int 并在包含 nan 值时

convert pandas values to int and when containing nan values

我正在读取来自 excel 的数据框。这样的 sheet 包含空值。

我想转换所有值(数字到 int),但这不能直接完成,因为 nan 值。

这是一种可能的解决方法:

在pandas

中转换成int数据
import pandas as pd
import numpy as np

ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values})
df5

然后将 nan 转换为 -1,这是一个 int

df5 = df5.replace(np.nan,-1)
df5 = df5.astype('int')
df5 = df5.replace(-1, np.nan)

但此操作再次将数据转换为浮点数。

为什么?我应该怎么做?

我不想使用逗号值,即小数,因为“用户”是人。

查看 。有一个功能可以通过使用 dtype 'Int64'.

将其保留为 NaN 值

您可以在创建数据框时或之后指定数据类型

import pandas as pd
import numpy as np

ind = list(range(5))
values = [1.0,np.nan,3.0,4.0,5.0]
df5 = pd.DataFrame(index=ind, data={'users':values},dtype='Int64')
#df5 = df5.astype('Int64')
df5

给予:

   users
0      1
1   <NA>
2      3
3      4
4      5