Добавли штуку, которая просто сортирует. Все работтает, остлось норм в проект сунуть и написать API

This commit is contained in:
maksim 2024-06-04 00:17:40 +04:00
parent 0b619038ba
commit a7aacfa323

View File

@ -0,0 +1,51 @@
import json
import pandas as pd
# JSON данные
json_data = '''
[
{ "value": "AAQ", "label": "Анапа, Витязево, AAQ", "timezone": "+3", "latitude": 45.0029, "longitude": 37.3473 },
{ "value": "ARH", "label": "Архангельск, Талаги, ARH", "timezone": "+3", "latitude": 64.6003, "longitude": 40.7168 },
{ "value": "ASF", "label": "Астрахань, им. Б.Н. Кустодиева, ASF", "timezone": "+4", "latitude": 46.2833, "longitude": 48.0063 },
{ "value": "BAX", "label": "Барнаул, Михайловка, BAX", "timezone": "+7", "latitude": 53.3638, "longitude": 83.5385 }
]
'''
data = json.loads(json_data)
# Извлекаем первое слово перед запятой и первое слово после запятой
cities_set = set()
for entry in data:
parts = entry['label'].split(',')
if len(parts) > 1:
city1 = parts[0].strip().split()[0] if parts[0].strip().split() else ''
city2 = parts[1].strip().split()[0] if parts[1].strip().split() else ''
cities_set.update([city1, city2])
# Прочитаем CSV файл
csv_file_path = 'geo-reviews-dataset-2023.csv'
df = pd.read_csv(csv_file_path)
# Функция для проверки совпадения города в адресе
def find_city(address, cities_set):
parts = address.split(',')
if len(parts) > 1:
word1 = parts[0].strip().split()[0] if parts[0].strip().split() else ''
word2 = parts[1].strip().split()[0] if parts[1].strip().split() else ''
if word1 in cities_set:
return word1
elif word2 in cities_set:
return word2
return None
# Добавим новый столбец на основе первого слова из адреса
df['city'] = df['address'].apply(lambda x: find_city(x, cities_set))
# Оставим только те строки, где город из CSV файла совпадает с городом из JSON
df_filtered = df[df['city'].notnull()]
# Сохраним отсортированный DataFrame обратно в CSV
output_file_path = 'sorted_filtered_geo-reviews-dataset-2023.csv'
df_filtered.to_csv(output_file_path, index=False)
print(df_filtered[:15])