确保所有 Pandas 系列数据类型都可为 null 的最简单编程方法

Easiest programmatic way to ensure all Pandas Series data types are nullable

提问人:Jacob Goldsmith 提问时间:10/23/2023 最后编辑:Jacob Goldsmith 更新时间:10/23/2023 访问量:43

问:

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

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

例如,以下内容都将使用扩展名(可为 null)dtypes:

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 可为空

评论

0赞 XXavier 10/23/2023
这是你要找的吗?pd.Series([1,2,None], dtype="Int64") pd.Series([True,False,None], dtype="boolean")
0赞 Jacob H 10/23/2023
您可以使用 指定列的类型,例如 .更多详情请见 pandas.pydata.org/docs/reference/api/pandas.read_csv.htmlpd.read_csvdf = pd.read_csv(filepath, dtype = {'colname': float})
0赞 Community 10/23/2023
请澄清您的具体问题或提供其他详细信息,以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。

答:

0赞 Tusher 10/23/2023 #1

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

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 的可为 null 扩展数据类型(如 pd)定义自定义数据类型。Int64Dtype() 用于可为 null 的整数和 pd。BooleanDtype() 表示可为 null 的布尔值。