Python поиск и добавление 2 CSV-файлов - PullRequest
0 голосов
/ 14 марта 2020

У меня есть 2 файла CSV. Первый файл содержит список всех штатов США, но в столбцах Долгота и Широта отсутствуют значения. Я нашел другой CSV-файл, который содержит все значения долготы и широты для всех штатов США.

Что я хочу сейчас сделать, это l oop через столбец «Местоположение» в первом файле, сопоставить он со столбцом «Location» во втором файле, затем получает соответствующие значения для его долготы и широты. После чего мне нужно будет добавить эти значения в столбец Долгота и Широта в первом файле

В настоящее время у меня есть следующее:

aviationdata = pd.read_csv('AviationData.csv', sep = ',', header = 0, encoding = 'iso-8859-1') #this is the first file
location = pd.read_csv('location.csv') #this is the 2nd file

import csv

with open('location.csv', 'r') as loc:
    locationfile = loc.read()

for i in range(len(aviationdata['Location'])):
    currentlocation = aviationdata['Location'].iloc[i]
    axis = []
    for i in currentlocation:
        if i in aviationdata['Location']:
   ... #i do not know how to continue from here

Я не знаю, как прийти с кодами для сравнения поля местоположения для извлечения кода долготы и широты из location.csv и добавления их к столбцам долготы и широты соответственно в aviationdata.

These are the fields for the first file

Это поля для первого файла (авиационные данные)

These are the fields for the 2nd file

Это поля для второго файла (местоположение)

1 Ответ

1 голос
/ 14 марта 2020

это похоже на хорошую работу для слияния https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

Если предположить, что столбцы Location в обоих DataFrames абсолютно одинаковы (то есть с учетом регистра и пробелов), то ,

1.) Получите все интересующие столбцы из авиационных данных

aviationdata = aviationdata[["Location", "Country", "Make", "Weather.Condition", "Year", "Month"]]

2.) Теперь объедините авиационные данные с currentLocation DataFrame для имени столбца "Местоположение"

aviationdata = aviationdata.merge(currentlocation, on=['Location'])

aviationdata.head(10)
...