2017-05-08 61 views
2

到csv我有一个GPS参数数据帧与不同类型的数据(整数,对象,浮点数,和串)如下:导出大熊猫数据帧用不同的数据类型在python

ID    time    speed pdop longitude latitude 
0 356363050613605 2017-02-20T17:04:40 210 3.051 8.81640 44.75045 
1 356363050637620 2017-02-21T13:44:38 172 60.00 9.41286 45.48268 

然后通过使用所述geopy包使用以下代码

import geopy 
from geopy.geocoders import Nominatim 
geolocator = Nominatim() 

def f(row): 
    loc = str(row['latitude']) + ',' +str(row['longitude']) 
    locations = geolocator.reverse(loc) 
    return location 

df['address'] = df.apply(lambda row: f(row), axis=1) 

它返回一个地址列中的数据帧与所述完整的地址和坐标作为字符串i'have解析出的纬度和经度坐标成地理位置。

ID    time    speed pdop longitude latitude address 
0 356363050613605 2017-02-20T17:04:40 210 3.051 8.81640 44.75045 (Viale del Lavoro, Zona Industriale C.I.P.I.A.N., Novi Ligure, AL, PIE, 15067, Italia), (44.7524715, 8.8122644) 
1 356363050637620 2017-02-21T13:44:38 172 60.00 9.41286 45.48268 (Strada Provinciale 14 Rivoltana, Liscate, MI, LOM, 20066, Italia), (45.4821247, 9.4118136) 

现在的问题,我试图将数据帧导出为CSV文件与“df.to_csv(‘output.csv’)”但它一直返回以下错误:

TypeError: str returned non-string (type NoneType)

我都甚至试图将下面的代码指定返回地址列如下,只有当它的功能:在尝试导出整个d时

with open('outpu.csvt', 'w') as file: 
    a = csv.writer(file) 
    data = df['address'] 
    a.writerows(data) 

ata-frame会返回一个空文件。任何帮助如何将整个数据帧导出到csv文件?

+1

df.dtypes显示的是你的列的数据类型? – Kickaha

+0

我猜你不需要第二组坐标。那些可能会被丢弃?其中一个问题可能是熊猫正在将其作为另一列阅读。 – pshep123

+0

如果你写成'xlsx',你会得到同样的错误吗?难道是因为你在'address'列中的值有逗号吗? – qbzenker

回答

1

我根本不熟悉geolocator,但看起来你的函数正在返回元组的列表(或元组)。如果改为返回类似:

return ','.join(location[0]) 

这应该一个字符串返回到您address列这应该是很容易写为csv。

+0

我刚刚尝试过,它留给我以下错误:“TypeError:('只能加入一个迭代','发生在索引0')“ – Mshendy

+0

好的,也许它已经是一个字符串了。然后使用'return location [0]'来看看会发生什么。 – pshep123

+0

现在它工作完美。感谢您的支持 – Mshendy