提问人:Jacob Goldsmith 提问时间:10/23/2023 最后编辑:Jacob Goldsmith 更新时间:10/23/2023 访问量:43
确保所有 Pandas 系列数据类型都可为 null 的最简单编程方法
Easiest programmatic way to ensure all Pandas Series data types are nullable
问:
我正在编写一个在内部使用 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)
答:
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 的布尔值。
评论
pd.Series([1,2,None], dtype="Int64")
pd.Series([True,False,None], dtype="boolean")
pd.read_csv
df = pd.read_csv(filepath, dtype = {'colname': float})