下面是我为这个问题创建的示例数据集:data1 = pd.DataFrame([['1','303','3/7/2016'],
['4','404','6/23/2011'],
['7','101','3/7/2016'],
['1','303','5/6/2017']],
columns=["code", "ticket #", "CB date"])
data1['CB date'] = pd.to_datetime(data1['CB date'])
data2 = pd.DataFrame([['1','303','2/5/2016'],
['4','404','6/23/2011'],
['7','101','3/17/2016'],
['1','303','4/6/2017']],
columns=["code", "ticket #", "audit date"])
data2['audit date'] = pd.to_datetime(data2['audit date'])
print(data1)
print(data2)
code ticket # CB date
0 1 303 2016-03-07
1 4 404 2011-06-23
2 7 101 2016-03-07
3 1 303 2017-05-06
code ticket # audit date
0 1 303 2016-02-05
1 4 404 2011-06-23
2 7 101 2016-03-17
3 1 303 2017-04-06
我想合并两个df,并确保CB日期始终在审核日期或之后:
^{pr2}$
但是,我只想在每个审计日期之后保留CB日期最早的行。所以在上面的输出中,第2行不应该存在,因为第1行和第2行都有相同的审计日期2016/2/5,但我只想保留第1行,因为CB日期比第2行CB日期更接近2016/2/5。在
期望输出:code ticket # CB date audit date
0 1 303 2016-03-07 2016-02-05
3 1 303 2017-05-06 2017-04-06
4 4 404 2011-06-23 2011-06-23
我知道在SQL中,我必须先对Audit date进行排序,然后按升序排序CB date,然后将每个组中的项rank=1;但是在Python/Pandas中,我该怎么做呢?在
我在这里读了其他的帖子,但是我还是没有得到它,所以非常感谢这里的一些建议。在
我读到的几篇文章包括: