使用分组从 API 查找创建新列



我有一个天气日期的数据框,如下所示:

+----+------------+----------+-----------+ |身份证 |Station_ID |纬度 |经度 | +----+------------+----------+-----------+ | 0 |6010400 |   52.93 |   -82.43 | | 1 |6010400 |   52.93 |   -82.43 | | 2 |6010400 |   52.93 |   -82.43 | | 3 |616I001 |   45.07 |   -77.88 | | 4 |616I001 |   45.07 |   -77.88 | | 5 |616I001 |   45.07 |   -77.88 | +----+------------+----------+-----------+

我想使用基于纬度和经度值的 API 查找创建一个名为postal_code的新列。我无法对数据帧中的每一行执行查找,因为这效率低下,因为有超过 500,000 行,只有 186 个唯一Station_IDs。由于我需要使用的 API 的速率限制,这也是不可行的。

我相信我需要执行分组转换,但无法弄清楚如何让它正常工作。

任何这方面的帮助将不胜感激。

我相信,您只能将 groupby 用于聚合,这不是您想要的。

首先将"纬度"和"经度"结合起来。它给出了一个带有元组的新列。

df['coordinates'] = list(zip(df['Latitude'],df['Longitude']))

然后,您可以使用此"坐标"列使用set数据类型创建(纬度,经度)的所有唯一值,因此它不包含重复项。

set(list(df['coordinates']))

然后按照您所说的使用 API 调用获取这些坐标的postal_codes,并将它们存储为字典。 然后,您可以使用此字典填充每行的邮政编码。

postal_code_dict = {'key':'value'} #sample dictionary
df['postal_code'] = df['coordinates'].apply(lambda x: postal_code_dict[x])

希望这有帮助。

最新更新