我有一個資料框,其中坐標列采用這種格式
[-7.821, 37.033]
我想創建兩列,第一列是lon第二列lat
我試過了
my_dict = df_map['coordinates'].to_dict()
df_map_new = pd.DataFrame(list(my_dict.items()),columns = ['lon','lat'])
但是創建的字典不會在之間拆分值,
而是創建具有以下格式的字典
0: '[-7.821, 37.033]'
提取 [,] 中的值并將它們放入原始資料框中的兩個新列的最佳方法是什么df_map?
先感謝您!
uj5u.com熱心網友回復:
您可以決議字串:
pattern = r"\[(?P<lon>.*),\s*(?P<lat>.*)\]"
out = df_map['coordinates'].str.extract(pattern).astype(float)
print(out)
# Output
lon lat
0 -7.821 37.033
uj5u.com熱心網友回復:
通過 將值轉換為串列ast.literal_eval,然后轉換為串列而不是 dicts:
import ast
my_L = df_map['coordinates'].apply(ast.literal_eval).tolist()
df_map_new = pd.DataFrame(my_L,columns = ['lon','lat'])
uj5u.com熱心網友回復:
除了已經提供的答案之外,您還可以嘗試以下操作:
ser_lon = df['coordinates'].apply(lambda x: x[0])
ser_lat = df['coordinates'].apply(lambda x: x[1])
df_map['lon'] = ser_lon
df_map['lat'] = ser_lat
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/431698.html
上一篇:重復pandasnno中的特定行。pandas中的次數并增加列中每次重復的計數
下一篇:從列值的總和構建df
