code: def fillna(
      groupby,
      value=None,
      method=None,
      axis=None,
      limit=None,
      downcast=None,
  ):
      """
      Fill NA/NaN values using the specified method
  
      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.
      method: {'backfill','bfill','ffill',None}, default None
      axis:   {0 or 'index', 1 or 'column'}
      limit:  int, default None
              If method is specified, this is the maximum number of consecutive
              NaN values to forward/backward fill
      downcast:   dict, default None
                  A dict of item->dtype of what to downcast if possible,
                  or the string ‘infer’ which will try to downcast to an appropriate equal type
  
      return: DataFrame or None
      """
      op = GroupByFillNa(
          value=value,
          method=method,
          axis=axis,
          limit=limit,
          downcast=downcast,
      )
      return op(groupby)
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import OutputType
  from ...serialization.serializables import AnyField, DictField, StringField, Int64Field
  from ..utils import parse_index, build_empty_df, build_empty_series
  from ..operands import DataFrameOperandMixin, DataFrameOperand
label_desc: Use image node_id 3 for calling a global function with example usage: fillna(groupby, value, method, axis, limit, downcast) and returns: op