如何阻止进程池将我的字符串转换为float

时间:2016-07-05 12:00:14

标签: python pandas multiprocessing

我有一个包含多个列(街道名称,城镇,坐标)的pandas数据框,最后一列设置为空字符串,用于表示某个位置的坐标(lat,lng)。

我有一种方法,其中来自其余列的值用作参数,以返回要插入坐标列的值。由于我有超过十万行并希望尽快完成,我使用进程池同时在多行上执行此操作。

我使用' to_records()' Pandas将每一行转换为一个对象的方法,将该对象传递给一个方法,该方法设置该对象的坐标属性,然后将其返回。

rows = coordinate_df.to_records()

pool = multiprocessing.Pool(processes=50)
rows_with_coord = pool.map(geocode_worker, rows)

我的worker方法是这样的,将地址列传递给一个方法,该方法返回一个包含lat和long位置的json对象:

def geocode_worker(row):
    json_results = coordinates_method(row[3])

    coordinates = 'lat: '+str(json_results.json['lat'])+', lng: '+str(json_results.json['lng'])

    row[7] = str(coordinates)

    return row

我的问题是运行它,因为我得到了这个错误:

Exception Value:    could not convert string to float: 'lat: 37.802408, lng: -121.221302'

我的目的不是将它转换为浮点数,我想将它作为定义格式的字符串。我错过了一些明显的东西吗?

修改

数据帧本身的dtypes

[127223 rows x 2 columns]
business_type     object
coordinates       object
full_address      object
website           object
status            object
name     object
view_count       float64
dtype: object

0 个答案:

没有答案