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, :]
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.