我有以下資料框:
import pandas as pd
df = pd.DataFrame({'City': ['Paris', 'New York', 'Rio'],
'Point': [(48.853638186045075, 2.3164768734228094, 0.0),
(40.73149967161843, -73.99345738955843, 0.0),
(-22.925268779593164, -43.23729165751779, 0.0)]
})
print(df)
# Output:
City Point
Paris (48.853638186045075, 2.3164768734228094, 0.0)
New York (40.73149967161843, -73.99345738955843, 0, 0)
Rio (-22.925268779593164, -43.23729165751779, 0.0)
我需要將地理坐標與緯度和經度分開。所以我做了以下代碼:
df['lat'] = 0
df['long'] = 0
for i in range(0, len(df)):
df['lat'].iloc[i] = df['Point'][i][0]
df['long'].iloc[i] = df['Point'][i][1]
print(df)
# Output:
City Point lat long
Paris (48.853638186045075, 2.3164768734228094, 0.0) 48.853638 2.316477
New York (40.73149967161843, -73.99345738955843, 0, 0) 40.731500 -73.993457
Rio (-22.925268779593164, -43.23729165751779, 0.0) -22.925269 -43.237292
實施作業完美。但是,我想洗掉 for() 以提高操作效率。如何洗掉 for()?
uj5u.com熱心網友回復:
cols = ['lat','long']
df[cols] = df['Point'].apply(lambda p: pd.Series([p[0],p[1]]),index=cols)
說明:將每個Point tuple轉成Series,apply方法的結果是一個DataFrame。將結果作為新列分配給df.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/403710.html
標籤:
上一篇:如何選擇三個sql表的不同值并使用pythonsqlite3執行內部連接?
下一篇:從遞回二叉樹搜索回傳陣列
