我有一個資料框 df 像這些 3 第一行是這些
| 城市 | 經度 | 緯度 |
|---|---|---|
| 托盧卡 | W099.6569 | N19.2925 |
| 浦那 | E73.8562 | N18.5167 |
| 布隆方丹 | E026.216667 | S29.116667 |
例如 Bloemfontain 行最后應該是這樣的
| 城市 | 經度 | 緯度 |
|---|---|---|
| 布隆方丹 | -29.116667 | 26.216667 |
我用了這段代碼
pattern = r'(?P<d>[\d\.] ).*?(?P<m>[\d\.] ).*?(?P<s>[\d\.] )'
dms = df['Latitude'].str.extract(pattern).astype(float)
df['LATITUDE'] = dms['d'] dms['m'].div(60) dms['s'].div(3600)
dms = df['Longitude'].str.extract(pattern).astype(float)
df['LONGITUDE'] = dms['d'] dms['m'].div(60) dms['s'].div(3600)
但沒有正確的經度和緯度
uj5u.com熱心網友回復:
我根本看不出在哪里需要使用模式搜索。這是我將如何完成任務。
# function to perform the partitioning
def cnvrtCoord(val: str) -> float:
sgn = 1
if val[0] == 'S' or val[0] == 'W':
sgn = -1
return float(val[1:]) * sgn
然后要更改經度和緯度列的內容,請使用:
df['Longitude'] = [cnvrtCoord(x) for x in df['Longitude'].tolist()]
df['Latitude'] = [cnvrtCoord(x) for x in df['Latitude'].tolist()]
給定您的輸入樣本,這將產生如下所示的資料框:
City Longitude Latitude
0 Toluca -99.656900 19.292500
1 Pune 73.856200 18.516700
2 Bloemfontain 26.216667 -29.116667
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524019.html
標籤:Python熊猫
上一篇:根據條件連接2個資料幀
下一篇:從包含字典串列的字典中繪制值
