为相似经纬度的时间序列温度数据分配专属ID的技术需求
按经纬度为时间序列数据分配唯一ID并筛选记录
核心需求
给包含日期、经度、纬度、温度的时间序列数据中,相同/相似经纬度的记录分配同一个专属ID,并能提取出同一地理位置的所有时间记录。
实现方案(以Python pandas为例)
以下是针对需求的具体操作步骤:
1. 准备数据并导入库
先把数据加载到pandas DataFrame中:
import pandas as pd # 模拟输入数据 data = { "Sr.": [1,2,3,4,5,6,7,8], "Date": ["1/1/1981","1/1/1981","1/1/1981","1/1/1981","2/1/1981","2/1/1981","2/1/1981","2/1/1981"], "Longitude": [79,78,77,76,79,78,77,76], "Latitude": [29.3,29.3,29.3,29.3,29.3,29.3,29.3,29.3], "Temp": [281,271,275,282,285,283,275,283] } df = pd.DataFrame(data)
2. 为经纬度组合分配唯一ID
- 如果是完全匹配的经纬度,直接通过
Longitude和Latitude的组合分组生成ID:
# 按经纬度分组,生成从1开始的连续ID df["ID"] = df.groupby(["Longitude", "Latitude"]).ngroup() + 1
- 如果是存在微小误差的相似经纬度(比如浮点精度问题),可以先对经纬度进行四舍五入,再分组:
# 先将经纬度四舍五入到指定小数位(比如1位),再分组生成ID df["rounded_Lon"] = df["Longitude"].round(1) df["rounded_Lat"] = df["Latitude"].round(1) df["ID"] = df.groupby(["rounded_Lon", "rounded_Lat"]).ngroup() + 1 # 可选:删除临时列 df = df.drop(["rounded_Lon", "rounded_Lat"], axis=1)
3. 提取同一ID的所有记录
比如要提取ID为1的所有记录:
# 筛选ID=1的行 filtered_df = df[df["ID"] == 1] print(filtered_df.to_string(index=False))
运行结果
执行上述代码后,输出和期望示例一致:
Sr. Date Longitude Latitude Temp ID 1 1/1/1981 79 29.3 281 1 5 2/1/1981 79 29.3 285 1
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

