Я работал с некоторыми данными о температуре с помощью Pandas.
Из DataFrame под названием 'data' я получил первое наблюдение данных благодаря этой строке кода:
first_obs = data['DATE'][0]
Имейте в виду, что data['DATE'] — это объект pandas.Series. индексы данных: СТАНЦИЯ ВЫСОТА ШИРОТА ДОЛГОТА ДАТА PRCP TAVG TMAX TMIN ГОД МЕСЯЦ
После некоторых манипуляций с данными я создал новый DataFrame 'monthly_data' со следующими индексами: MONTH TAVG YEAR temp_celsius ref_temp diff abs_diff
Теперь я хотел получить строку этого фрейма данных с максимальным значением в столбце «abs_diff»:
weather_anomaly = monthly_data.loc[monthly_data['abs_diff'] == monthly_data['abs_diff'].max()]
Теперь Weather_anomaly — это еще один объект DataFrame, поэтому возникает странная проблема: если я напишу код, как раньше, вот так:
weather_anomaly['MONTH'][0]
выходит ошибка:
KeyError Traceback (последний последний вызов) ~\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexes\base.py в get_loc(self, key, method, tolerance) 3079 try: - › 3080 возвращает self._engine.get_loc(casted_key) 3081, кроме KeyError как err:
pandas_libs\index.pyx в pandas._libs.index.IndexEngine.get_loc()
pandas_libs\index.pyx в pandas._libs.index.IndexEngine.get_loc()
pandas_libs\hashtable_class_helper.pxi в pandas._libs.hashtable.Int64HashTable.get_item()
pandas_libs\hashtable_class_helper.pxi в pandas._libs.hashtable.Int64HashTable.get_item()
Ошибка ключа: 0
Вышеупомянутое исключение было прямой причиной следующего исключения:
KeyError Traceback (последний последний вызов) в ----› 1 Weather_anomaly['МЕСЯЦ'][0] 2 print('Месяц с наибольшей температурной аномалией ', Weather_anomaly['МЕСЯЦ'].values[0], 'года', weather_anomaly['YEAR'].values[0], 'с разницей ', weather_anomaly['diff'].values[0])
~\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\series.py в getitem(self, key) 851 852 elif key_is_scalar: --› 853 return self ._get_value(ключ) 854 855, если is_hashable(ключ):
~\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\series.py in _get_value(self, label, takeable) 959 960 # Аналогично Index.get_value, но мы не возвращаемся к positional --› 961 loc = self.index.get_loc(label) 962 return self.index._get_values_for_loc(self, loc, label) 963
~\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexes\base.py в get_loc(self, ключ, метод, допуск) 3080
return self._engine.get_loc( casted_key) 3081, кроме KeyError as err: -> 3082 поднять KeyError(key) с err 3083 3084, если допуск не равен None:Ошибка ключа: 0
Ничего поясняющего не приходит. К счастью, решить эту задачу легко:
weather_anomaly['MONTH'].values[0]
Итак, последний вопрос заключается в том, что несмотря на то, что data['DATE'] и month_data['abs_diff'] являются объектами pandas.Series, почему Weather_anomaly['abs_diff'][0] не работает?