将Pandas系列转换为'对象'使用`int`和`nan`元素进行dtype

时间:2017-09-07 01:13:52

标签: python pandas na series

我有一个带有整数条目的系列,但也有一些空条目。它表示为带有dtype=float64的系列。我想将它转换为带有dtype=object的系列,其中整数条目存储为Python int,空条目存储为np.nan

我有两次尝试。第一个不起作用,因为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。 :(

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

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

type(s[0])

以上代码段返回int。 :)

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

在Pandas中有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

关于在熊猫中是否有更简单的方法,从0.24版(2019年1月)开始,如果您有Java且整数值不存在,可以使用nullable integers数据:

Series