Pandas - 使用 PostCoder 在每一行中查找纬度和经度,然后在新列中查找 return 邮政编码

Pandas - using PostCoder to lookup Latitude & Longitude in each row, then return Postcode in new columns

我想从 pandas 中的数据框 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

您必须使用 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).

你可以试试:

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

您可以想象 apply 函数循环执行函数(在本例中为 lambda 函数)的数据帧的每一行或每一列。
当轴选项为 1 时它将循环行,当轴选项为 0(默认)时将循环列。
此 lambda 函数接收一行作为 x,然后将 'Latitude' 和 'Longitude' 值发送到 .get_nearest。

根据数据帧的大小,这可能需要一段时间。
我已经在这里测试了邮政编码,但它没有用,但如果这个库对你有用,那么这段代码应该没问题。