确保所有 Pandas Series 数据类型均可为空的最简单编程方法

问题描述 投票:0回答:1

我正在编写一个在内部使用 Pandas DataFrames 的程序。对于程序来说,专门使用可空的 Pandas 数据类型非常重要。我可以使用 Pandas 读入数据,然后将“整数型”和“布尔型”列转换为可空类型,但理想情况下,可以选择将数据作为最初可空数据类型读入。

是否有某种标志告诉 Pandas“始终使用可为空的 int 和 bool 数据类型,并且如果可以用这些类型表示列,则不要将列推断为浮点数”?

例如,以下内容都将使用扩展(可为空)数据类型:

import pandas as pd
import io
pd.Series([1,2,None])
pd.Series([True,False,None])
pd.read_csv(io.StringIO("1,1,NA\n"),header=None)
python pandas io nullable
1个回答
0
投票

如果您希望要求对任何或所有列使用可为空的数据类型,您可以使用 read_csv 或其他数据读取方法中的 dtype 选项来显式定义数据类型。使用 Pandas 的可为空扩展数据类型,您可以定义可为空整数和布尔数据类型。

import pandas as pd
import io
import numpy as np

nullable_int = pd.Int64Dtype()
nullable_bool = pd.BooleanDtype()

data = io.StringIO("1,1,NA\n")
df = pd.read_csv(data, header=None, dtype={0: nullable_int, 1: nullable_int, 2: nullable_int})

s = pd.Series([1, 2, None], dtype=nullable_int)
print(s)

s = pd.Series([True, False, None], dtype=nullable_bool)
print(s)

您还可以使用 Pandas 的可空扩展数据类型定义自定义数据类型,例如用于可空整数的 pd.Int64Dtype() 和可空布尔值的 pd.BooleanDtype()。

© www.soinside.com 2019 - 2024. All rights reserved.