Ejemplo n.º 1
0
    def geo(slf, clean_df):
        try:
            geol = Nominatim(user_agent="basicalily")
            geol.default_timeout = 10000

            def get_lat_lon_as_string(addr):
                q = {'street': addr, 'city': 'Philadelphia', 'country': 'USA'}
                geoplace = geol.geocode(query=q,
                                        viewbox=[(40.151378, -75.432450),
                                                 (39.796416, -74.933517)
                                                 ])  #GUESS BOX
                if geoplace:
                    print(geoplace)
                return f'{geoplace.latitude}*{geoplace.longitude}' if geoplace else 'NOTFOUND'

            clean_df.loc[:, 'city_coord'] = clean_df['Address'].apply(
                lambda addr: get_lat_lon_as_string(addr))
            clean_df = clean_df[clean_df['city_coord'] != 'NOTFOUND']
            clean_df.loc[:, 'Latitude'] = clean_df['city_coord'].apply(
                lambda x: x.split('*')[0])
            clean_df.loc[:, 'Longitude'] = clean_df['city_coord'].apply(
                lambda x: x.split('*')[1])

            clean_df.drop(columns=['city_coord'], inplace=True)
            clean_df.loc[:, 'Status Contractual Search Date'] = pd.to_datetime(
                clean_df['Status Contractual Search Date'])
        except:
            raise TypeError("Malformed Clean")
        return clean_df