Я пытаюсь использовать код (предоставленный по ссылке ниже), чтобы сопоставить координаты широты и долготы с районами Нью-Йорка:
https://www.kaggle.com/muonneutrino/nyc-taxis-eda-and-mapping-position-to-borough
Я работаю с нехваткой памятилокальная среда Jupyter, поэтому я импортировал большой файл .csv с данными Taxi lat / long в фрейм данных dask.
Сначала я создаю фрейм данных dask с найденными данными Yellow Cab за июнь 2016 года здесь : и подмножество test_day
для уменьшения набора:
import pandas as pd
import dask.dataframe as dd
import dask.array as da
from dask.distributed import Client
client = Client(processes=False)
%pylab inline
cols= ['pickup_longitude', 'pickup_latitude', 'tpep_pickup_datetime',]
ddf = dd.read_csv('yellow_tripdata_2016-06.csv',blocksize=13e7,assume_missing=True, usecols=cols)
ddf['tpep_pickup_datetime'] = dd.to_datetime(ddf.tpep_pickup_datetime, errors='ignore')
ddf['pickup_day'] = ddf.tpep_pickup_datetime.dt.day
td = ddf.loc[ddf.pickup_day == 10]
td = td.rename(columns={'pickup_longitude':'plon',
'pickup_latitude':'plat'} )
Я начинаю с объявления значений latmin, lonmin, latmax и lonmax и создания массива numpy map_tracts:
xmin = 40.48
ymin = -74.28
xmax = 40.93
ymax = -73.65
dlat = (xmax-xmin) / 199
dlon = (ymax-ymin) / 199
td['lat_idx'] = (np.rint((td['plat'] - latmin) / dlat))
td['lon_idx'] = (np.rint((td['plon'] - lonmin) / dlon ))
map_tracts = ([[34023007600, 34023007600, 34023007500, 34031246300,
34031246300, 34031246300],
[34023007600, 34023007600, 34023007600, 34031246300,
34031246300, 34031246300],
[34023007600, 34023007600, 34023007600, 34031246300,
34031246300, 34031246300],
[ 0, 0, 0, 36059990200,
36119007600, 36119007600],
[ 0, 0, 0, 36059990200,
36059990200, 36119007600]])
Затем я пытаюсь запустить массив dask, где предложение:
td['pu_tracts'] = da.where(((xmin < td.plat < xmax) &
(ymin < td.plong < ymin)),
(map_tracts[td.lat_idx, td.lon_idx]),0)
Но получаю ошибку:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-24-5228e3ec653a> in <module>
----> 1 td['pu_tracts'] = np.where(((xmin < td.plat < xmax) &
2 (ymin < td.plong < ymin)),
3 (map_tracts[td_day.lat_idx, td.lon_idx]),0)
~/anaconda3/lib/python3.7/site-packages/dask/dataframe/core.py in __bool__(self)
441 raise ValueError("The truth value of a {0} is ambiguous. "
442 "Use a.any() or a.all()."
--> 443 .format(self.__class__.__name__))
444
445 __nonzero__ = __bool__ # python 2
ValueError: The truth value of a Series is ambiguous. Use a.any() or a.all().
Это проблема с dask?