gpt4 book ai didi

python - 如何检测 Pandas 对象列中的子类型?

转载 作者:太空狗 更新时间:2023-10-30 00:37:45 25 4
gpt4 key购买 nike

我有下一个 DataFrame:

df = pd.DataFrame({'a': [100, 3,4], 'b': [20.1, 2.3,45.3], 'c': [datetime.time(23,52), 30,1.00]})

如果可能的话,我想检测列中的子类型,而无需显式编程循环。

我正在寻找下一个输出:

column a = [int]
column b = [float]
column c = [datetime.time, int, float]

最佳答案

您应该明白,使用 Pandas,您可以拥有两大类系列:

  1. 优化的结构:通常是数字数据,包括 np.datetime64bool
  2. object dtype:用于具有混合类型或无法在 NumPy 数组中本地保存的类型的系列。该系列的结构是指向任意 Python 对象的指针序列,通常效率低下。

这个序言的原因是你应该只需要将元素逻辑应用于第二种类型。第一类数据本质上是同质的。

所以你应该相应地分离你的逻辑。

常规数据类型

使用pd.DataFrame.dtypes :

print(df.dtypes)

a int64
b float64
c object
dtype: object

对象数据类型

通过 pd.DataFrame.select_dtypes 隔离这些系列然后使用字典理解:

obj_types = {col: set(map(type, df[col])) for col in df.select_dtypes(include=[object])}

print(obj_types)

{'c': {int, datetime.time, float}}

您需要做更多的工作才能获得您需要的确切格式,但以上应该是您的攻击计划。

关于python - 如何检测 Pandas 对象列中的子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51817742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com