pandas 中基于时间范围条件进行表连接
时间: 2024-12-24 11:38:54 浏览: 17
在Pandas中,如果你想基于时间范围条件进行表连接,通常可以使用`merge()`、`concat()`或`query()`等函数,结合`pd.Timestamp`或`datetime`对象来筛选时间区间。以下是几种常见方法:
1. **merge() + .loc**:
```python
merged_df = pd.merge(left_df, right_df, on='common_column',
left_index=(left_df['timestamp_column'] > start_time) & (left_df['timestamp_column'] < end_time),
right_index=(right_df['timestamp_column'] > start_time) & (right_df['timestamp_column'] < end_time))
```
这里假设`timestamp_column`是包含时间戳的列,start_time和end_time是你想要的区间起止点。
2. **query()函数**:
```python
filtered_left = left_df.query('timestamp_column >= @start_time & timestamp_column <= @end_time')
merged_df = filtered_left.merge(right_df, on='common_column')
```
query()函数会返回一个新的DataFrame,只包含满足时间条件的数据。
3. **使用merge_asof()**:
对于近似匹配的时间点,`merge_asof()`函数可能会更合适,特别是有先后顺序的时间序列数据:
```python
merged_df = pd.merge_asof(left_df, right_df, on='timestamp_column', by='shared_column', tolerance=timedelta(hours=1))
```
指定一个容忍度(如timedelta),找出最近的时间匹配。
记得在进行时间区间连接时,确保两边的数据集都已按照日期排序。
阅读全文
相关推荐
















