2017-05-08 41 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