3条回答 默认 最新
关注
可以用 DataFrame 的 group 分组,然后对组内的元素查找最大和第二大的日期。
完整代码如下:from pandas import Series,DataFrame from datetime import datetime import pandas as pd import numpy as np df = pd.DataFrame( {'Serialsnumber': 'BR85278403 BR85278403 BR85278403 BR85278403 BR85279403 BR85279403 BR85279403 BH58960 BH58960 BH539411 BH539411'.split(), 'Receive Date': ['2018-04-03', '2018-10-26', '2019-03-21','2019-07-22', '2017-09-23', '2017-12-14','2018-10-09', '2017-11-02', '2018-04-23','2017-09-09', '2018-05-11',], 'QTY': [1, 1, 1, 1, 1, 1, 1 ,1, 1, 1 ,1]}) print df g = df.groupby('Serialsnumber') for name ,group in g: #get max Date maxDate = group['Receive Date'].max() #去掉最大值后得到一个 list ,取这 list 的 max 就是第二大日期了 list = [] for temp in group['Receive Date']: if temp != maxDate : list.append(temp) #find the second max Date secondDate = max(list) #datediff datediff = datetime.strptime(maxDate,'%Y-%m-%d')-datetime.strptime(secondDate,'%Y-%m-%d') print name,'maxDate is',maxDate,'secondDate',secondDate,'diffDay',datediff
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报