weixin_43428945 2019-09-20 17:43 采纳率: 0%
浏览 5169
已采纳

求助:python dataframe相同项的两行数相减,几个大神看来都说难

#求助:python dataframe相同项的两行数相减,几个大神看来都说难

数据如下图:
图片说明

要求:
用python构成一个新dataframe,计算出相同Serialsnumber的Receive Date的差。(也就是说算出没部机收到日期的间隔天数)

急,请大神帮忙!!!!
问题补充:
Serialsnumber不只两个是相同的,有写有三个或四个相同的,要求计算出最大和第二大的Receive Date的差值。补充数据如图:
图片说明

  • 写回答

3条回答 默认 最新

  • 毕小宝 博客专家认证 2019-09-20 17:54
    关注

    可以用 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
    
    

    我把日期统一相同格式的了,后面就是直接对分组内的数据按楼主需求进行处理即可。
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵