У меня есть два кадра данных Polars, содержащие уникальный идентификатор и имя утилиты. Я пытаюсь построить сопоставление записей между этими двумя кадрами данных.
Я использую плагин Polars_fuzzy_match для выполнения нечеткого поиска строк по записям.
Мой первый кадр данных (wg_df) примерно является подмножеством второго (eia_df). В приведенном ниже коде я передаю каждое имя_утилиты из wg_df в fuzzy_match_score, выполняемое против eia_utility_name. Могу ли я избежать итерации по строкам и векторизовать это?
import polars as pl
from polars_fuzzy_match import fuzzy_match_score
# Sample data
# wg_df is approximately a subset of eia_df.
wg_df = pl.DataFrame({"wg_id": [1, 2], "utility_name": ["Utility A", "Utility B"]})
eia_df = pl.DataFrame(
{"eia_id": [101, 102, 103], "utility_name": ["Utility A co.", "Utility B", "utility c"]}
)
out = pl.DataFrame(
schema=[
("wg_id", pl.Int64),
("eia_id", pl.Int64),
("wg_utility_name", pl.String),
("utility_name", pl.String),
("score", pl.UInt32),
],
)
# Iterate through each wg utility and find the best match in eia
# can this be vectorized?
for wg_id, utility in wg_df.iter_rows():
res = (
eia_df.with_columns(score=fuzzy_match_score(pl.col("utility_name"), utility))
.filter(pl.col("score").is_not_null())
.sort(by="score", descending=True)
)
# insert the wg_id and wg_utility_name into the results. They have to be put into the
res.insert_column(
0,
pl.Series("wg_id", [wg_id] * len(res)),
)
res.insert_column(2, pl.Series("wg_utility_name", [utility] * len(res)))
out = out.vstack(res.select([col_name for col_name in out.schema]))
Подробнее здесь: https://stackoverflow.com/questions/789 ... dataframes
Как выполнить быстрое нечеткое сопоставление между кадрами данных Polars? ⇐ Python
Программы на Python
1762078499
Anonymous
У меня есть два кадра данных Polars, содержащие уникальный идентификатор и имя утилиты. Я пытаюсь построить сопоставление записей между этими двумя кадрами данных.
Я использую плагин Polars_fuzzy_match для выполнения нечеткого поиска строк по записям.
Мой первый кадр данных (wg_df) примерно является подмножеством второго (eia_df). В приведенном ниже коде я передаю каждое имя_утилиты из wg_df в fuzzy_match_score, выполняемое против eia_utility_name. Могу ли я избежать итерации по строкам и векторизовать это?
import polars as pl
from polars_fuzzy_match import fuzzy_match_score
# Sample data
# wg_df is approximately a subset of eia_df.
wg_df = pl.DataFrame({"wg_id": [1, 2], "utility_name": ["Utility A", "Utility B"]})
eia_df = pl.DataFrame(
{"eia_id": [101, 102, 103], "utility_name": ["Utility A co.", "Utility B", "utility c"]}
)
out = pl.DataFrame(
schema=[
("wg_id", pl.Int64),
("eia_id", pl.Int64),
("wg_utility_name", pl.String),
("utility_name", pl.String),
("score", pl.UInt32),
],
)
# Iterate through each wg utility and find the best match in eia
# can this be vectorized?
for wg_id, utility in wg_df.iter_rows():
res = (
eia_df.with_columns(score=fuzzy_match_score(pl.col("utility_name"), utility))
.filter(pl.col("score").is_not_null())
.sort(by="score", descending=True)
)
# insert the wg_id and wg_utility_name into the results. They have to be put into the
res.insert_column(
0,
pl.Series("wg_id", [wg_id] * len(res)),
)
res.insert_column(2, pl.Series("wg_utility_name", [utility] * len(res)))
out = out.vstack(res.select([col_name for col_name in out.schema]))
Подробнее здесь: [url]https://stackoverflow.com/questions/78979491/how-to-perform-fast-fuzzy-matching-between-polars-dataframes[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия