pandas.DataFrame.fillna#
- DataFrame.fillna(value, *, axis=None, inplace=False, limit=None)[源代码]#
用 value 填充 NA/NaN 值。
- 参数:
- 值标量, 字典, 序列, 或数据框
用于填充空洞的值(例如 0),或者是一个指定每个索引(对于 Series)或列(对于 DataFrame)使用哪个值的字典/Series/DataFrame。不在字典/Series/DataFrame 中的值将不会被填充。该值不能是列表。
- 轴{0 或 ‘index’} 用于 Series, {0 或 ‘index’, 1 或 ‘columns’} 用于 DataFrame
沿哪个轴填充缺失值。对于 Series,此参数未使用并默认为 0。
- inplacebool, 默认为 False
如果为真,就地填充。注意:这将修改此对象的任何其他视图(例如,DataFrame中列的非复制切片)。
- 限制int, 默认 None
这是沿整个轴填充NaN的最大条目数。如果不是None,则必须大于0。
- 返回:
- Series/DataFrame 或 None
如果
inplace=True
,则用缺失值填充的对象或为 None。
参见
注释
对于非对象类型,
value=None
将使用该类型的 NA 值。更多详细信息请参见 填充缺失数据 部分。例子
>>> df = pd.DataFrame( ... [ ... [np.nan, 2, np.nan, 0], ... [3, 4, np.nan, 1], ... [np.nan, np.nan, np.nan, np.nan], ... [np.nan, 3, np.nan, 4], ... ], ... columns=list("ABCD"), ... ) >>> df A B C D 0 NaN 2.0 NaN 0.0 1 3.0 4.0 NaN 1.0 2 NaN NaN NaN NaN 3 NaN 3.0 NaN 4.0
将所有 NaN 元素替换为 0。
>>> df.fillna(0) A B C D 0 0.0 2.0 0.0 0.0 1 3.0 4.0 0.0 1.0 2 0.0 0.0 0.0 0.0 3 0.0 3.0 0.0 4.0
将列 ‘A’, ‘B’, ‘C’ 和 ‘D’ 中的所有 NaN 元素分别替换为 0, 1, 2 和 3。
>>> values = {"A": 0, "B": 1, "C": 2, "D": 3} >>> df.fillna(value=values) A B C D 0 0.0 2.0 2.0 0.0 1 3.0 4.0 2.0 1.0 2 0.0 1.0 2.0 3.0 3 0.0 3.0 2.0 4.0
只替换第一个 NaN 元素。
>>> df.fillna(value=values, limit=1) A B C D 0 0.0 2.0 2.0 0.0 1 3.0 4.0 NaN 1.0 2 NaN 1.0 NaN 3.0 3 NaN 3.0 NaN 4.0
当使用 DataFrame 填充时,替换会沿着相同的列名和相同的索引进行。
>>> df2 = pd.DataFrame(np.zeros((4, 4)), columns=list("ABCE")) >>> df.fillna(df2) A B C D 0 0.0 2.0 0.0 0.0 1 3.0 4.0 0.0 1.0 2 0.0 0.0 0.0 NaN 3 0.0 3.0 0.0 4.0
请注意,列 D 不受影响,因为它不在 df2 中。