获取支持NA/is nullab的boolean pandas列

2024-09-25 10:25:45 发布

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

如何创建一个支持Nan/missing值的dtype bool(或int)的pandas dataframe列?在

当我这样做的时候:

d = {'one' : np.ma.MaskedArray([True, False, True, True], mask = [0,0,1,0]),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print (df.dtypes)
print (df)

one隐式转换为object。类似于ints

^{pr2}$

one在这里隐式转换为float64,我更希望我留在int域中,不处理浮点运算及其特性(在比较时总是有容差,舍入错误等)


Tags: truedataframepandasdfnpnanoneint
1条回答
网友
1楼 · 发布于 2024-09-25 10:25:45

在整数情况下,从pandas 0.24(2019年1月)起,您可以使用nullable integers来实现您想要的:

In [165]: df
Out[165]:
   one  two
a  1.0  1.0
b  3.0  2.0
c  NaN  3.0
d  1.0  4.0

In [166]: df.astype('Int64')
Out[166]:
   one  two
a    1    1
b    3    2
c  NaN    3
d    1    4

这是通过将支持数组转换为^{}来实现的,布尔函数没有等价的东西,但是在this GitHub issuethis PyData talk中讨论了这个方向的一些工作。您也可以编写自己的extension type来覆盖这种情况,但如果您可以接受由整数0和1表示的布尔值,则可以使用以下方法:

^{pr2}$

相关问题 更多 >