gpt4 book ai didi

python - 使用 fillna、downcast 和 pandas

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

我搜索了一些东西来帮助我理解类方法 DataFrame.fillna 中的关键字参数 downcast。请举个例子,方便我和大家的学习:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html

此外,如果您可以用 NaN 或什至列中的 NoneType 值逐列说明类型设置,以及如何处理此类常见问题东西。这两者之间的区别是什么。

非常感谢!

最佳答案

尽管文档怎么说:

downcast : dict, default is None

a dict of item->dtype of what to downcast if possible, or the string ‘infer’ which will try to downcast to an appropriate equal type (e.g. float64 to int64 if possible)

如果您将字典提供为downcast,您将得到AssertionError("dtypes as dict is not supported yet")

只能使用 downcast='infer' 这会导致 pandas 尝试向下转型,例如将 float 转换为整数。但这似乎有问题:如果列中的所有 float 都超过 10000,它将失去精度并将它们转换为整数。

In [1]: import pandas as pd
...: import numpy as np
...: df = pd.DataFrame([[3.14,9999.9,10000.1,200000.2],[2.72,9999.9,10000.1,300000.3]], columns=list("ABCD"))
...: df.dtypes
...:
Out[1]:
A float64
B float64
C float64
D float64
dtype: object

In [2]: df
Out[2]:
A B C D
0 3.14 9999.9 10000.1 200000.2
1 2.72 9999.9 10000.1 300000.3

In [3]: dff=df.fillna(0, downcast='infer')
...: dff.dtypes
...:
Out[3]:
A float64
B float64
C int64
D int64
dtype: object

In [4]: dff
Out[4]:
A B C D
0 3.14 9999.9 10000 200000
1 2.72 9999.9 10000 300000

关于python - 使用 fillna、downcast 和 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27066412/

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