Панды - использование PostCoder для поиска широты и долготы в каждой строке, а затем возвращает почтовый индекс в новых столбцах - PullRequest
1 голос
/ 01 апреля 2019

Я хочу прочитать два столбца (Широта и долгота) из моего кадра данных df1 в пандах, создать новый почтовый индекс столбца и добавить почтовый индекс в каждой строке в кадре данных.

Я думаю, что эта веб-страница полезна: https://postcodes.readthedocs.io/en/latest/

df1 = df[['Col1',' Col2', 'Col3','Col4', 'Col5', 'Latitude', 'Longitude']]

for row in df1[7]:
    # Try to,
    try:
    # get lat long and find the post code
        postcodes.get_nearest(lat, lng)

    # But if you get an error
    except:
        # error

# Create a new columns post code in df1
df1['postcode'] = zipcode

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы можете попробовать:

df1['postcode'] = df1.apply(
    lambda x: postcodes.get_nearest(x['Latitude'], x['Longitude']),
    axis=1
)

Вы можете себе представить, что функция apply зацикливает каждую строку или столбец информационного кадра, выполняя функцию (в данном случае лямбда-функцию).
Это будет циклстроки, когда параметр оси равен 1, и будет циклически обрабатывать столбцы, когда параметры оси равен 0 (по умолчанию).
Эта лямбда-функция получает строку в виде x, а затем отправляет значения 'Latitude' и 'Longitude' в .get_nearest.

В зависимости от размера вашего фрейма данных это может занять некоторое время.
Я протестировал почтовые индексы здесь, и это не сработало, но если эта библиотека работает для вас, этот код долженделать хорошо.

0 голосов
/ 01 апреля 2019

Вы должны использовать apply для создания нового столбца на основе других данных информационного кадра.

def getPostcode(row):
    try:
        row['postcode']=postcodes.get_nearest(row['Latitude'], row['Longitude'])
    except:
        print('Error for data {0}'.format(row))
    return row

Затем добавьте эту строку в основной код после init df1:

df1.apply(getPostcode,axis=1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...