docs: def timeseries_reactive(self):
          """
          Reactive power time series in kvar.
  
          Parameters
          -------
          :pandas:`pandas.Series<series>`
              Series containing reactive power time series in kvar.
  
          Returns
          ----------
          :pandas:`pandas.DataFrame<dataframe>` or None
              Series containing reactive power time series in kvar. If it is not
              set it is tried to be retrieved from `generation_reactive_power`
              attribute of global TimeSeries object. If that is not possible
              None is returned.
  
          """
  
          if self._timeseries_reactive is None:
              # try to get time series for reactive power depending on if they
              # are differentiated by weather cell ID or not
              # raise warning if no time series for generator type (and weather
              # cell ID) can be retrieved
              if self.grid.network.timeseries.generation_reactive_power \
                      is not None:
                  if isinstance(
                          self.grid.network.timeseries.generation_reactive_power.
                                  columns, pd.MultiIndex):
                      if self.weather_cell_id:
                          try:
                              timeseries = self.grid.network.timeseries. \
                                  generation_reactive_power[
                                  self.type, self.weather_cell_id].to_frame('q')
                              return timeseries * self.nominal_capacity
                          except (KeyError, TypeError):
                              logger.warning("No time series for type {} and "
                                             "weather cell ID {} given. "
                                             "Reactive power time series will "
                                             "be calculated from assumptions "
                                             "in config files and active power "
                                             "timeseries.".format(
                                  self.type, self.weather_cell_id))
                              return None
                      else:
                          raise ValueError(
                              "No weather cell ID provided for fluctuating "
                              "generator {}, but reactive power is given as a "
                              "MultiIndex suggesting that it is differentiated "
                              "by weather cell ID.".format(repr(self)))
                  else:
                      try:
                          timeseries = self.grid.network.timeseries. \
                              generation_reactive_power[self.type].to_frame('q')
                          return timeseries * self.nominal_capacity
                      except (KeyError, TypeError):
                          logger.warning("No reactive power time series for "
                                         "type {} given. Reactive power time "
                                         "series will be calculated from "
                                         "assumptions in config files and "
                                         "active power timeseries.".format(
                              self.type))
                          return None
              else:
                  return None
          else:
              return self._timeseries_reactive.loc[
                     self.grid.network.timeseries.timeindex, :]