大熊猫有没有办法在一个群体中找到第二早的时间?在这个数据框架中,我希望找到买家在特定分支机构的第二个最早时间,并在groupby买家之后保留分支机构列(用于将来的计数目的)
import pandas as pd
import numpy as np
import datetime
df = pd.DataFrame({'Branch' : 'A A A A A A A B B C'.split(),
'Buyer': 'Carl Mark Carl Carl Joe Joe Joe Carl Mark Joe'.split(),
'Date':[datetime.datetime(2013,1,1,13,0),datetime.datetime(2013,1,1,13,5),datetime.datetime(2013,10,1,20,0),datetime.datetime(2013,10,2,10,0),datetime.datetime(2013,10,1,20,0),datetime.datetime(2013,10,2,10,0),datetime.datetime(2013,12,2,12,0),datetime.datetime(2013,12,2,14,0), datetime.datetime(2013,11,2,14,0), datetime.datetime(2013,11,5,14,0)]})
我可以在某个分行找到每个买家的最早时间,如下所示:
df.groupby('Buyer').agg({'Date':'min', 'Branch':'first'})
我很难找到第二早的。我曾尝试将nsmallest(2)和last()用于第二个最早的分支机构,但如果买方只访问过一家分支机构,则这将包括一些第一个最早的分支机构。我还希望在输出表中保留分支列
我怎样才能找到第二个最早的时间保持与我上面所做的groupby相同的格式?谢谢大家!
您可以在这里使用pandas
rank
函数df['rank'] = df.groupby(['Buyer','Branch'])['Date'].rank(ascending=True)
这将为特定买家和分支机构的每个“日期”值附加排名。现在你可以选择你想要的等级
因此,对于买方和分支机构来说,第二早是这样的:
df.query('rank == 2.0')
相关问题 更多 >
编程相关推荐