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.
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
用标量填充
^{pr2}$
用字典填充
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
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
fillna
打算使用value
填充,或者使用*{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}*
方法之一From the docs you referenced
回答
fillna
不接受函数作为value
参数的有效输入。但是,如果您有一个可以生成序列或数据帧的函数,那么您可以将所需的任何输入传递给该函数,并将结果传递给fillna
示例
value
参数可以采用标量、字典、序列或数据帧。下面是一些看起来像什么的例子考虑数据帧
df
用标量填充
^{pr2}$用字典填充
用系列填充
填充数据帧
用along索引填充,您需要转置
df.fillna(filler, axis=1)
生成NotImplementedError
简短回答:
不,
fillna
不能接受函数,只能接受方法。在简短回答:
有一个
df.interpolate
函数,允许您使用不同的插值技术填充。在长回答:
您可以参考the answer here,其中有人概述了使用scipy推断数据的方法。不幸的是,没有一个本地的熊猫功能来完成这一点):
相关问题 更多 >
编程相关推荐