df['station'] = station # Set index df = df.set_index(['station', 'time']) # Round decimals df = df.round(1) # Append data to full DataFrame if df_station is None: df_station = df else: df_station = df_station.join(df) except BaseException: pass # Append data to full DataFrame if df_full is None: df_full = df_station else: df_full = df_full.append(df_station) except BaseException: pass # Write DataFrame into Meteostat database task.write(df_full, hourly_national)
'wspd': obs.wind_speed.value('KMH') if obs.wind_speed is not None and obs.wind_speed.value('KMH') > 0 else None, 'pres': obs.press.value('HPA') if obs.press is not None else None, 'coco': get_condicode(obs.weather) if obs.weather is not None else None }) except BaseException: pass # List -> DataFrame df = pd.DataFrame.from_records(data) # Calculate humidity data df['rhum'] = df.apply(lambda row: temp_dwpt_to_rhum(row), axis=1) # Drop dew point column df = df.drop('dwpt', axis=1) # Set index df = df.set_index(['station', 'time']) # Round decimals df = df.round(1) # Write DataFrame into Meteostat database task.write(df, hourly_metar)
'rhum': record['data']['instant']['details']['relative_humidity'] if 'relative_humidity' in record['data']['instant']['details'] else None, 'prcp': record['data']['next_1_hours']['details']['precipitation_amount'] if 'next_1_hours' in record['data'] and 'precipitation_amount' in record['data']['next_1_hours']['details'] else None, 'wspd': record['data']['instant']['details']['wind_speed'] * 3.6 if 'wind_speed' in record['data']['instant']['details'] else None, 'wpgt': record['data']['instant']['details']['wind_speed_of_gust'] * 3.6 if 'wind_speed_of_gust' in record['data']['instant']['details'] else None, 'wdir': int(round(record['data']['instant']['details']['wind_from_direction'])) if 'wind_from_direction' in record['data']['instant']['details'] else None, 'pres': record['data']['instant']['details']['air_pressure_at_sea_level'] if 'air_pressure_at_sea_level' in record['data']['instant']['details'] else None } # Create DataFrame df = pd.DataFrame(map(map_data, data['properties']['timeseries'])) # Set index df['station'] = station[0] df = df.set_index(['station', 'time']) # Shift prcp column by 1 (as it refers to the next hour) df['prcp'] = df['prcp'].shift(1) # Append data to full DataFrame if df_full is None: df_full = df else: df_full = df_full.append(df) except error.HTTPError: pass # Write DataFrame into Meteostat database task.write(df_full, hourly_model)
'WG km/h': 'wspd', 'WSG km/h': 'wpgt', 'N l/m²': 'prcp', 'LDred hPa': 'pres', 'SO %': 'tsun' } # Read CSV data df = pd.read_csv( 'http://www.zamg.ac.at/ogd/', ';', parse_dates=parse_dates, usecols=usecols, decimal=',') # Rename columns df = df.rename(columns=names) # Set index df = df.set_index(['station', 'time']) # Convert time zone to UTC df = df.tz_localize('Europe/Vienna', level='time') df = df.tz_convert(None, level='time') # Convert sunshine from percent to minutes df['tsun'] = round(60 * (df['tsun'] / 100)) # Write DataFrame into Meteostat database task.write(df, hourly_synop)
decimal=',', parse_dates=parse_dates) # Rename columns df = df.rename(columns=names) # Snow cm -> mm df['snow'] = df['snow'].multiply(10) # Change coco df['coco'] = df['coco'].apply(get_condicode) # Add station column df['station'] = station['id'] # Set index df = df.set_index(['station', 'time']) # Append data to full DataFrame if df_full is None: df_full = df else: df_full = df_full.append(df) except BaseException: pass # Write DataFrame into Meteostat database task.write(df_full, hourly_synop)
df['dwpt'] = df['dwpt'].div(10) df['pres'] = df['pres'].div(10) df['wspd'] = df['wspd'].div(10).apply(ms_to_kmh) df['prcp'] = df['prcp'].div(10) # Calculate humidity data df['rhum'] = df.apply(lambda row: temp_dwpt_to_rhum(row), axis=1) # Drop dew point column df = df.drop('dwpt', axis=1) # Add station column df['station'] = station['id'] # Set index df = df.set_index(['station', 'time']) # Round decimals df = df.round(1) # Write data into Meteostat database task.write(df, hourly_global) except BaseException: pass # Quit FTP connection ftp.quit()
# Adapt columns df['tavg'] = df['tavg'].div(10) df['tmin'] = df['tmin'].div(10) df['tmax'] = df['tmax'].div(10) df['prcp'] = df['prcp'].div(10) df['wspd'] = df['wspd'].div(10).apply(ms_to_kmh) df['wpgt'] = df['wpgt'].div(10).apply(ms_to_kmh) # Add station column df['station'] = station['id'] # Set index df = df.set_index(['station', 'time']) # Append data to full DataFrame if df_full is None: df_full = df else: df_full = df_full.append(df) except BaseException: pass # Write DataFrame into Meteostat database task.write(df_full, daily_global) # Quit FTP connection ftp.quit()
df = df.rename(columns=NAMES) # Convert PRES to MSL df['pres'] = df.apply(lambda row: pres_to_msl(row, altitude), axis=1) df['wpgt'] = df['wpgt'].apply(ms_to_kmh) df['wspd'] = df['wspd'].apply(ms_to_kmh) df['tsun'] = df['tsun'] * 60 df['snow'] = df['snow'] * 10 # Add weather station ID df['station'] = station # Set index df = df.set_index(['station', 'time']) # Round decimals df = df.round(1) # Append data to full DataFrame if df_full is None: df_full = df else: df_full = df_full.append(df) except BaseException: pass # Write DataFrame into Meteostat database task.write(df_full, daily_national)