gpt4 book ai didi

python - fillna 可以接受一个函数还是只接受给定的方法?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:19 27 4
gpt4 key购买 nike

fillna可以接受一个函数吗?或者只是“backfill”、“bfill”等方法?

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html

例如,如果数据帧没有任何初始数据,回填方法就没有用了,不是吗?反之亦然,如果数据帧末尾没有数据。

这就是我想使用外推等适当方法的一些原因

最佳答案

fillna 旨在采用 value 进行填充,或使用方法之一 *{'backfill', 'bfill', 'pad ', 'ffill', 无}*

From the docs you referenced

value : scalar, dict, Series, or DataFrame

Value to use to fill holes (e.g. 0), alternately a dict/Series/DataFrame of values specifying which value to use for each index (for a Series) or column (for a DataFrame). (values not in the dict/Series/DataFrame will not be filled). This value cannot be a list.

回答

fillna 不将函数作为 value 参数的有效输入。但是,如果您有一个可以生成系列或数据帧的函数,那么您可以将需要的任何输入传递给函数并将结果传递给 fillna


例子

value 参数可以采用标量、字典、系列或数据帧。下面是一些看起来像的例子

考虑数据框 df

df = pd.DataFrame([
[1, None, 2, None],
[None, 3, None, 4],
[5, 6, None, None],
[None, None, 7, 8]
], list('ABCD'), list('WXYZ'))

print(df)

W X Y Z
A 1.0 NaN 2.0 NaN
B NaN 3.0 NaN 4.0
C 5.0 6.0 NaN NaN
D NaN NaN 7.0 8.0

用标量填充

df.fillna(9)

W X Y Z
A 1.0 9.0 2.0 9.0
B 9.0 3.0 9.0 4.0
C 5.0 6.0 9.0 9.0
D 9.0 9.0 7.0 8.0

用字典填充

filler = dict(W=-9, X=-10, Y=-11, Z=-12)
df.fillna(filler)

W X Y Z
A 1.0 -10.0 2.0 -12.0
B -9.0 3.0 -11.0 4.0
C 5.0 6.0 -11.0 -12.0
D -9.0 -10.0 7.0 8.0

用系列填充

filler = pd.Series(dict(W=-9, X=-10, Y=-11, Z=-12))
df.fillna(filler)

W X Y Z
A 1.0 -10.0 2.0 -12.0
B -9.0 3.0 -11.0 4.0
C 5.0 6.0 -11.0 -12.0
D -9.0 -10.0 7.0 8.0

填充数据框

filler = pd.DataFrame(-np.arange(df.size).reshape(df.shape), df.index, df.columns)
print(filler)

W X Y Z
A 0 -1 -2 -3
B -4 -5 -6 -7
C -8 -9 -10 -11
D -12 -13 -14 -15

df.fillna(filler)

W X Y Z
A 1.0 -10.0 2.0 -12.0
B -9.0 3.0 -11.0 4.0
C 5.0 6.0 -11.0 -12.0
D -9.0 -10.0 7.0 8.0

沿索引填充,需要转置
df.fillna(filler, axis=1) 生成一个 NotImplementedError

filler = dict(A=-9, B=-10, C=-11, D=-12)
print(df.T.fillna(filler).T)

W X Y Z
A 1.0 -9.0 2.0 -9.0
B -10.0 3.0 -10.0 4.0
C 5.0 6.0 -11.0 -11.0
D -12.0 -12.0 7.0 8.0

关于python - fillna 可以接受一个函数还是只接受给定的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43455242/

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