Вариант ввода 1 кадра данных:
data = [[[151.20732,-33.86785]],
[[81.67732,-09.86]],
[[1.2890,43.8]],
[[567.200,33.867]],
[[557.21,33.86]]]
df = pd.DataFrame(data, columns=['geo'])
Вариант ввода 2 кадра данных: literal_eval используется для чтения CSV-файла, содержащего список, в противном случае список читается как одна строка.
import ast
literal = lambda x: ast.literal_eval(x)
data = pd.read_csv('/Test_data.csv', converters={'geo.geometry.coordinates': literal})
df = pd.DataFrame(data, columns=['geo.geometry.coordinates'])
df.rename(columns = {'geo.geometry.coordinates':'geo'}, inplace = True)
Алгоритм:
import math
def trunc(f,d):
# Truncate float (f) to d decimal places, unless NaN
return 'nan' if math.isnan(f) else f"{int(f*10**d)/10**d:0.{d}f}"
df['geo_neo'] = df.apply(lambda r: trunc(r['geo'][0], 3) + ':'
+ trunc(r['geo'][1], 3), axis = 1)
Вывод DataFrame:
geo geo_neo
0 [151.20732, -33.86785] 151.207:-33.867
1 [81.67732, -9.86] 81.677:-9.860
2 [1.289, 43.8] 1.289:43.800
3 [567.2, 33.867] 567.200:33.867
4 [557.21, 33.86] 557.210:33.860