Получение KeyError при создании цикла для заполнения фрейма данных - PullRequest
0 голосов
/ 09 июня 2019

Итак, я работаю с Darksky API для хранения исторических данных о погоде в кадре данных.Тем не менее, я получаю KeyError при попытке загрузить фрейм данных с данными.

Как я делаю это, используя цикл для , который выполняется каждый час и собирает все почасовые данные.Поэтому, когда вы запрашиваете API, вы получаете вывод, подобный этому:

Выходные данные

погода ['почасовая']

{'summary': 'Облачно с утра.', 'icon': 'переменная облачность', данные ': [{

  • ' time ': 1528354800,
  • 'summary': 'Небольшая облачность',
  • 'icon': 'переменная облачность-ночь',
  • 'deposIntensity': 0,
  • 'Возможность выделения: 0,
  • 'температура': 12,94,
  • 'кажущаяся температура': 12,94,
  • 'точка росы': 9,36,
  • 'влажность': 0,79,
  • «давление»: 1011,4,
  • «WindSpeed»: 2,2,
  • «WindGust»: 2,69,
  • «WindBearing»: 252,
  • 'cloudCover': 0,33,
  • 'uvIndex': 0,
  • 'visibility': 13.81}]}

Эти данныебудет отображаться для каждого часа для данного дня или диапазона дней, если вы его зациклили.Итак, сначала я создал свой фрейм данных следующим образом:

Создание фрейма данных

daily_weather = pd.DataFrame (

  • {'time': [],
  • 'realtime': [],
  • 'summary': [],
  • 'icon': [],
  • 'deposIntensity': [],
  • «осадка»: [],
  • «температура»: [],
  • «кажущаяся температура»: [],
  • 'dewPoint ': [],
  • ' влажность ': [],
  • ' давление ': [],
  • ' windSpeed ​​': [],
  • 'windGust': [],
  • 'windBearing': [],
  • 'cloudCover': [],
  • 'uvIndex': [],
  • 'visibility': []})

Затем я использую цикл для вызова API и загрузки данных за определенный промежуток времени для заполнения фрейма данных:

Заполнение DataFrame:

для дня в диапазоне (1,30):

dt = datetime(2018, 6, day).isoformat()

weather = forecast('d783b2b300466c9bd421eb89ebbd2eca', *VICTORIA, time = dt)

weather.refresh(units='si')

for hour in weather['hourly']['data']:

    daily_weather = daily_weather.append(

    {'time': hour['time'],
     'realtime': datetime.fromtimestamp(hour['time']),
     'summary': hour['summary'],
     'icon': hour['icon'],
     'precipIntensity': hour['precipIntensity'],
     'precipProbability': hour['precipProbability'],
     'temperature': hour['temperature'],
     'apparentTemperature': hour['apparentTemperature'],
     'dewPoint': hour['dewPoint'],
     'humidity': hour['humidity'],
     'pressure': hour['pressure'],
     'windSpeed': hour['windSpeed'],
     'windGust': hour['windGust'],
     'windBearing': hour['windBearing'],
     'cloudCover': hour['cloudCover'],
     'uvIndex': hour['uvIndex'],
     'visibility': hour['visibility'],
     }, ignore_index=True)

Если я включу только первые несколько параметров, код работает, но явыдает ошибку при использовании всего:

KeyError

Мне бы очень понравилось, пожалуйста.Я в тупике.

1 Ответ

0 голосов
/ 23 июня 2019

Посмотрите на их документацию , там написано, что precipIntensity, как и многие другие значения, является необязательным.Чтобы предотвратить возникновение подобных ошибок, используйте hour.get('precipIntensity, 0) по умолчанию равным 0 - хотя вы также можете по умолчанию None, если хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...