gpt4 book ai didi

python - pandas 列的数据类型在通过应用传递给函数时更改为对象?

转载 作者:太空狗 更新时间:2023-10-29 20:18:26 25 4
gpt4 key购买 nike

我需要在函数中使用 pandas 列的 dtype,但出于某种原因,当我使用 apply 调用函数时,dtype 更改为 object。有谁知道这里发生了什么?

import pandas as pd

df = pd.DataFrame({'stringcol':['a'], 'floatcol': [1.5]})
df.dtypes
Out[1]:
floatcol float64
stringcol object
dtype: object

df.apply(lambda col: col.dtype)
Out[2]:
floatcol object
stringcol object
dtype: object

请注意,如果直接传递列,则不会发生此问题:

f = lambda col: col.dtype
f(test.floatcol)
Out[3]: dtype('float64')

最佳答案

这似乎是由于 DataFrame._apply_standard 中的优化所致。该方法代码中的“快速路径”创建一个输出系列,其 dtype 是 df.values 的 dtype,在您的情况下是 object 因为 DataFrame 是混合型。如果您将 reduce=False 传递给您的 apply 调用,则结果是正确的:

>>> df.apply(lambda col: col.dtype, reduce=False)
floatcol float64
stringcol object
dtype: object

(我必须说,我不清楚 reduce 的这种行为如何与文档协调。)

关于python - pandas 列的数据类型在通过应用传递给函数时更改为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715287/

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