def add_year(self, year, force=False):
        if not force and self._year_fetch_attempted(year):
            if self._year_in_series(year):
                return
            else:
                dates = pd.date_range("{}-01-01 00:00".format(year),"{}-01-01 00:00".format(int(year) + 1), freq=self.freq)[:-1]
                new_series = pd.Series(None, index=dates, dtype=float)
                self.tempC = self.tempC.append(new_series).sort_index().resample(self.freq).mean()
                self.save_to_cache()
                return

        data = self.client.get_isd_data(self.station, year)
        dates = pd.date_range("{}-01-01 00:00".format(year),"{}-01-01 00:00".format(int(year) + 1), freq=self.freq)[:-1]
        new_series = pd.Series(None, index=dates, dtype=float)
        for hour in data:
            if not pd.isnull(hour["temp_C"]):
                dt = hour["datetime"]
                new_series[datetime(dt.year, dt.month, dt.day, dt.hour)] = hour["temp_C"]

        # changed for pandas > 0.18
        self.tempC = self.tempC.append(new_series).sort_index().resample(self.freq).mean()
        self.save_to_cache()
        self._year_fetches_attempted.add(year)
Adds temperature data to internal pandas timeseries
dataset/ETHPy150Open impactlab/eemeter/eemeter/weather.py/ISDWeatherSource.add_year