使用空列表作为 Series.fillna 的填充值

Rub*_*nez 4 python series dataframe pandas

我需要将该列的 NaN 值更改'FocusColumn'为空列表。


我尝试这样做:

df['FocusColumn'].fillna([],inplace=True)
Run Code Online (Sandbox Code Playgroud)

但它引发了我以下错误:

337         if validate_scalar_dict_value and isinstance(value, (list, tuple)):
338             raise TypeError( 
339                 '"value" parameter must be a scalar or dict, but 
340                 f'you passed a "{type(value).__name__}"'
341             )
TypeError: "value" parameter must be a scalar or dict, but you passed a "list"
Run Code Online (Sandbox Code Playgroud)

正确的做法是什么?

tim*_*geb 7

看起来你可以通过向 提供一个字典来解决这个问题Series.fillna

>>> df
   FocusColumn
0          NaN
1          1.0
2          NaN
>>> df['FocusColumn'].fillna({i: [] for i in df.index})
0    []
1     1
2    []
Name: FocusColumn, dtype: object
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 令人惊讶的是,这仅适用于Series.fillna.
  2. 对于缺少值很少的大型系列,这可能会产生不合理数量的一次性空列表。
  3. 使用pandas1.0.5 进行测试。