我已经搜索了一些东西来帮助我理解类方法downcast
中的关键字参数DataFrame.fillna
。请提供一个示例,以帮助促进我和每个人的学习:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html
此外,如果您可以逐列说明类型设置,并且列中包含NaN
或甚至NoneType
值,以及如何处理此类常见内容。这两者之间的区别是什么。
非常感谢!
答案 0 :(得分:3)
尽管文档说的是:
向下滚动: dict,默认为无
项目的词典 - > dtype of what to 如果可能的话,可以向下传播,或者尝试向下传播的字符串'推断' 到适当的相等类型(如果可能,例如float64到int64)
如果您提供dict为downcast
,则会获得AssertionError("dtypes as dict is not supported yet")
只能使用downcast='infer'
导致pandas尝试向下转换例如浮点数到整数。但这似乎是错误的:如果列中的所有浮点数都超过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