如何在pandas中拆分数据帧,处理和组合

时间:2018-03-26 03:22:19

标签: python python-3.x pandas dataframe geopy

问题:是否有基于索引将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)

0 个答案:

没有答案