Странное поведение запроса в Pandas - PullRequest
1 голос
/ 16 марта 2019

Я загрузил olist_geolocation_dataset из Kaggle (https://www.kaggle.com/olistbr/brazilian-ecommerce#olist_geolocation_dataset.csv), и я делаю первый анализ.

Мой код следующий:

geolocation = pd.read_csv('olist_geolocation_dataset.csv')
df = geolocation.groupby(['geolocation_lat', 'geolocation_lng'], as_index = False)['geolocation_state'].count()
df.sort_values('geolocation_state', ascending = False).head()

enter image description here

geolocation.query('geolocation_lat == -23.495901')

enter image description here

enter image description here

Мой вопрос: почему запрос возвращает пустой фрейм данных, если существует значение, переданное в условии фильтрации?

1 Ответ

0 голосов
/ 16 марта 2019

Проблема в значении float, поэтому из-за проблем точности необходимо numpy.isclose с boolean indexing:

out = geolocation[np.isclose(geolocation['geolocation_lat'], -23.495901)]
print (out.head())
       geolocation_zip_code_prefix  geolocation_lat  geolocation_lng  \
19112                         2020       -23.495993       -46.635616   
19118                         2020       -23.495960       -46.634081   
19129                         2020       -23.495861       -46.636183   
19161                         2044       -23.495681       -46.618947   
19167                         2084       -23.495675       -46.599478   

      geolocation_city geolocation_state  
19112        sao paulo                SP  
19118        sao paulo                SP  
19129        sao paulo                SP  
19161        sao paulo                SP  
19167        sao paulo                SP  
...