问题:是否有基于索引将pandas数据帧拆分为多个组的直接方法,应用预定义函数计算新要素并将组合回原始形状并使用扩展功能?
我试图丰富NYC GreenTaxi数据中的功能,如下所示,
加载数据和定义流程功能
import pandas as pd
from geopy.geocoders import Nominatim
import os
import urllib.request
#Downloading the data, if not present
if not os.path.exists('./gc_data_sept15.csv'):
urllib.request.urlretrieve('https://s3.amazonaws.com/nyc-tlc/trip+data/green_tripdata_2015-09.csv', './gc_data_sept15.csv')
#load the data
greentaxi_data = pd.read_csv('./gc_data_sept15.csv')
#functionality to get the county based on co-ordinates, using geolocator api of geopy
def getCounty(coords,geolocator):
location = geolocator.reverse(coords)
if location.raw is not None and location.raw['address']['county'] is not None:
return location.raw['address']['county'].split()[0]
else :
return 'Unknown'
检查子集上的功能
#define geolocator and derive a Pickup_borough
subset_ = greentaxi_data[:100]
geolocator = Nominatim(timeout=5000)
subset_['Pickup_borough'] = subset_.apply(\
lambda row: getCounty((row['Pickup_latitude'],\
row['Pickup_longitude']),geolocator),axis=1)
这可行
>>> subset_['Pickup_borough'].head(5)
0 Kings
1 Bergen
2 Queens
3 Queens
4 Kings
但是当我尝试在原始数据框架上进行此操作时,尽管多次尝试使用更高的超时时间,我仍然会在服务超时时间内进行操作。在某个指数之后。
所以,我的问题是,有没有办法可以将数据帧拆分为1000个索引的子集,应用上面的函数并将结果合并回原始数据帧形状。
原始数据大小:
>>> greentaxi_data.shape
(1494926, 21)