复杂的日期时间合并Pandas

2024-04-25 20:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据

import numpy as np
import pandas as pd
import datetime

table = [[datetime.datetime(2015, 1, 1), 1],
         [datetime.datetime(2015, 1, 27), 1],
         [datetime.datetime(2015, 1, 31), 1],
         [datetime.datetime(2015, 2, 1), 1],
         [datetime.datetime(2015, 2, 3), 1],
         [datetime.datetime(2015, 2, 15), 1],
         [datetime.datetime(2015, 2, 28), 1],
         [datetime.datetime(2015, 3, 1), 1],
         [datetime.datetime(2015, 3, 17), 1],
         [datetime.datetime(2015, 3, 28), 1],
         [datetime.datetime(2015, 4, 12), 1],
         [datetime.datetime(2015, 4, 28), 1]]

df = pd.DataFrame(table, columns=['Date', 'Id'])

table2 = [datetime.datetime(2015, 3, 31), 
          datetime.datetime(2015, 6, 30), 
          datetime.datetime(2015, 9, 30)]

有没有一种方法可以将table2合并到table上,使table2的元素连接到table中最近但最小的元素上,然后向后填充表格?还需要对列Id进行分组。例如,生成的表将是

^{pr2}$

谢谢,廷吉斯


Tags: columns数据importnumpyid元素dataframepandas
1条回答
网友
1楼 · 发布于 2024-04-25 20:21:50

您可以使用^{}

table2 = pd.to_datetime(table2)
idx = table2.searchsorted(df['Date'].values)

这将查找索引,其中df['Date']中的日期应插入table2,同时保持排序顺序。注意,这假设table2以排序顺序开始。在


^{pr2}$

收益率

         Date  Id        New
0  2015-01-01   1 2015-03-31
1  2015-01-27   1 2015-03-31
2  2015-01-31   1 2015-03-31
3  2015-02-01   1 2015-03-31
4  2015-02-03   1 2015-03-31
5  2015-02-15   1 2015-03-31
6  2015-02-28   1 2015-03-31
7  2015-03-01   1 2015-03-31
8  2015-03-17   1 2015-03-31
9  2015-03-28   1 2015-03-31
10 2015-04-12   1 2015-06-30
11 2015-04-28   1 2015-06-30

相关问题 更多 >