使用“int”和“nan”元素将Pandas系列转换为“object”数据类型

2024-09-30 14:32:23 发布

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

我有一个包含整数项的序列,但也有一些空项。它用dtype=float64表示。我想把它转换成一个带有dtype=object的序列,其中整数项存储为Pythonints,空项存储为np.nans

我下面有两次尝试。第一个不起作用,因为int是(出乎意料的?)仍转换为float。第二种方法如我所愿。在

s = pd.Series([1, np.nan])

s = s.astype(object)
i = s.notnull()
s[i] = s[i].astype(int)

type(s[0])

上面的代码段返回float。:(

^{pr2}$

上面的代码段返回int。:)

为什么第一个例子不能工作,即使这个系列有dtype=object?转换为list似乎是一个非常奇怪的方法来实现这一点,但我找不到任何其他方法来实现它。在

在熊猫身上有没有更简单的方法?在


Tags: 方法object代码段np序列整数floatint
1条回答
网友
1楼 · 发布于 2024-09-30 14:32:23

关于在Pandas中是否有更简单的方法来实现这一点,从0.24版(2019年1月)起,您可以使用nullable integers来处理整数值和缺失数据:

In [120]: s.astype('Int64')
Out[120]:
0      1
1    NaN
dtype: Int64

In [121]: type(s.astype('Int64')[0])
Out[121]: numpy.int64

In [122]: type(s.astype('Int64')[1])
Out[122]: float

相关问题 更多 >