Обнаружить точность координат в полярных поплавках?Python

Программы на Python
Ответить
Anonymous
 Обнаружить точность координат в полярных поплавках?

Сообщение Anonymous »

У меня есть некоторые данные о координатах; некоторые из них имеют высокую точность, некоторые — низкую точность из-за множества источников данных и других операционных реалий. Я хочу иметь столбец, указывающий относительную точность координат. Пока что я хочу по существу подсчитывать цифры после запятой; в моем случае больше цифр указывает на более точные данные. В моем случае я обычно получаю данные, подобные данным в примере; он либо имеет точность от пяти до шести цифр, либо только одну цифру. Оба полезны; но мы можем проводить больший анализ данных более высокой точности, как вы можете себе представить.
Этот код делает то, что я хочу, но кажется... многословным и неэлегантным; как будто мне платят за строку кода. Есть ли более простой способ сделать это?

Код: Выделить всё

import polars as pl

df = pl.DataFrame(
{
"lat":  [ 43.6425047,  43.6,  40.688966,  40.6],
"lng":  [-79.3861057, -79.3, -74.044438, -74.0],
}
)

df = (df.with_columns(
pl.col("lat").cast(pl.String)
.str.split_exact(".", 1)
.struct.rename_fields(["lat_major", "lat_minor"])
.alias("lat_temp"))
.unnest("lat_temp")
.with_columns(
pl.col("lat_minor")
.str.len_chars()
.alias("lat_precision"))
.drop("lat_major", "lat_minor")
.with_columns(
pl.col("lng").cast(pl.String)
.str.split_exact(".", 1)
.struct.rename_fields(["lng_major", "lng_minor"])
.alias("lng_temp"))
.unnest("lng_temp")
.with_columns(
pl.col("lng_minor")
.str.len_chars()
.alias("lng_precision"))
.drop("lng_major", "lng_minor")
.with_columns(
pl.col("lat_precision")
.add(pl.col("lng_precision"))
.alias("precision"))
.drop("lat_precision", "lng_precision")
)
df.head()
результат

Код: Выделить всё

shape: (4, 3)
┌───────────┬────────────┬───────────┐
│ lat       ┆ lng        ┆ precision │
│ ---       ┆ ---        ┆ ---       │
│ f64       ┆ f64        ┆ u32       │
╞═══════════╪════════════╪═══════════╡
│ 43.642505 ┆ -79.386106 ┆ 14        │
│ 43.6      ┆ -79.3      ┆ 2         │
│ 40.688966 ┆ -74.044438 ┆ 12        │
│ 40.6      ┆ -74.0      ┆ 2         │
└───────────┴────────────┴───────────┘
позже я могу, например, извлечь записи с точностью более 5, поскольку мои исходные данные обычно имеют точность либо до одного десятичного знака, либо до четырех+ десятичных знаков на координату.

Подробнее здесь: https://stackoverflow.com/questions/795 ... ars-floats
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»