pandas 假设你有两张表格,一张叫做df1,另一张叫df2,都包含姓名(Name)和时间戳(Timestamp)字段,需要对df1和df2按进行姓名和时间戳进行匹配,df1时间戳匹配的时候按前后范围15天寻找df2的时间戳,新生成的表格行数和df1相同,df1在df
时间: 2024-12-24 13:35:55 浏览: 13
在Pandas中,如果你想要按照姓名和时间戳对`df1`和`df2`进行匹配,并考虑到df1每个时间戳前后15天内的df2数据,你可以使用`merge`函数结合`rolling`窗口来完成。这里是一个基本步骤:
1. 首先,你需要确保两个DataFrame的时间戳都是日期类型并且设置了索引。
```python
df1['Timestamp'] = pd.to_datetime(df1['Timestamp'])
df2['Timestamp'] = pd.to_datetime(df2['Timestamp'])
# 将Timestamp设为索引
df1.set_index('Timestamp', inplace=True)
df2.set_index('Timestamp', inplace=True)
```
2. 使用`rolling`创建一个15天的窗口:
```python
window = df1.index.shift(-15).union(df1.index.shift(15))
```
3. 对于`df1`,合并它与窗口内`df2`的数据:
```python
merged_df = pd.merge_asof(df1, df2, left_index=True, right_index=True, tolerance=pd.Timedelta(days=15), direction='nearest')
```
这会返回一个新的DataFrame,其中`df1`中的每一行都与其15天内的`df2`行进行了匹配。结果可能会有一些缺失值,因为不是所有的df1行都有对应的df2行在15天范围内。
阅读全文