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