При попытке создать столбец кортежа, состоящий из координат широты и долготы из двух отдельных столбцов, я наткнулся на zip
как довольно быструю альтернативу itertuples
, составить список и т. Д. Это должно быть быстро, потому что я имею делос примерно 4M строк, и я не хочу тратить свое время на создание атрибутов.
Хорошо, мой вопрос прекрасно задается, глядя на вывод этого Кодекса: что происходит и как это можно сделатьбыть предотвращенным?Я абсолютно уверен, что, например, 52.353500
настолько точен, насколько это возможно, и Dataframe не просто вырезает его для просмотра - потому что это уже равняется (очень грубой) точности позиционирования в 10 сантиметров.
print(df['lat'].head())
print(df['long'].head())
list(zip(df['lat'].head(), df['long'].head()))
Вывод:
14 52.353500
37 52.355511
42 52.354019
44 52.373829
83 52.354599
Name: lat, dtype: float32
14 5.00611
37 4.90732
42 4.92045
44 4.84816
83 4.89405
Name: long, dtype: float32
[(52.35350036621094, 5.006110191345215),
(52.35551071166992, 4.907320022583008),
(52.35401916503906, 4.920450210571289),
(52.37382888793945, 4.8481597900390625),
(52.35459899902344, 4.894050121307373)]
В соответствии с запросом: Dataframe был загружен с использованием read_csv
с dtype float32
для обоих столбцов.
Решение: Это была смесь из меня, не зная ограниченийСерийное представление чисел с плавающей запятой, не использующее float_precision
при чтении данных и использующее float32
в сочетании с float_precision
.Дети, используйте float
dtype и пусть Pandas решит (использовать float64
).