使用Pandas DataFrame匹配不同采样率的时间数据
时间序列匹配与RSRP值填充方案
核心思路
通过时间向下取整对齐,把0.1秒采样的飞行日志时间映射到最近的整秒,再与1秒采样的RSRP数据按整秒时间关联,实现批量填充。
具体实现(Python Pandas为例)
假设你已有两个数据集:
flight_log_df:飞行日志数据,含时间列(如timestamp)rsrp_df:RSRP数据,含整秒时间列(如rsrp_timestamp)和rsrp_value列
步骤1:统一时间格式
先将两个数据集的时间列转为datetime类型,确保匹配基础一致:
import pandas as pd # 转换飞行日志时间 flight_log_df['timestamp'] = pd.to_datetime(flight_log_df['timestamp']) # 转换RSRP时间 rsrp_df['rsrp_timestamp'] = pd.to_datetime(rsrp_df['rsrp_timestamp'])
步骤2:生成整秒匹配键
对飞行日志的时间向下取整到整秒,生成用于关联的时间键:
flight_log_df['second_aligned'] = flight_log_df['timestamp'].dt.floor('S')
步骤3:关联并填充RSRP值
方法1:字典映射(快速高效)
# 构建RSRP时间-值映射字典 rsrp_map = rsrp_df.set_index('rsrp_timestamp')['rsrp_value'].to_dict() # 为飞行日志批量填充RSRP值 flight_log_df['rsrp_value'] = flight_log_df['second_aligned'].map(rsrp_map)
方法2:数据集合并(适合保留多字段场景)
merged_df = pd.merge( flight_log_df, rsrp_df, left_on='second_aligned', right_on='rsrp_timestamp', how='left' )
常见异常处理
- 若RSRP数据存在某一秒缺失,填充结果会出现
NaN,可按需补全:# 用前一秒的RSRP值填充缺失 flight_log_df['rsrp_value'] = flight_log_df['rsrp_value'].fillna(method='ffill') # 或用后一秒值填充 flight_log_df['rsrp_value'] = flight_log_df['rsrp_value'].fillna(method='bfill') - 若时间是数值型时间戳(如毫秒/秒级),先转成
datetime再处理:# 示例:毫秒级时间戳转datetime flight_log_df['timestamp'] = pd.to_datetime(flight_log_df['timestamp'], unit='ms')
内容的提问来源于stack exchange,提问作者Donovan
相关产品推荐
相关产品推荐

