shine944 2021-03-27 18:25 采纳率: 100%
浏览 738
已采纳

pandas实现按条件连接两个dataframe,具体条件见内容

excel1:

excel2:

输出新的dataframe(excel3):

具体连接:按照A值将exce1和excel2两表连接成一个新表excel3, 连接条件为excel1表中“告警开始时间”与excel2表中“停电时间”最接近的值对应的行相连接,放在excel1生成新表excel3,是否可用apply和merge函数实现,具体代码求助

  • 写回答

3条回答 默认 最新

  • 关注

    试下这样看是否可以:

    1 先用A字段将两个表合并

    2 然后计算 告警开始时间和停电时间的时间差 

    3 时间差字段根据你的条件筛选(可根据是否必须停电时间在告警开始时间后面进行筛选 , 如果不考虑的话, 只看时间差的绝对值即可)

    4 最后先排序分组后, 筛选第1条记录

    import pandas as pd
    import numpy as np
    
    data1 = pd.read_excel('c:/users/yyz/desktop/123.xlsx',sheet_name='Sheet1')
    data2 = pd.read_excel('c:/users/yyz/desktop/123.xlsx',sheet_name='Sheet2')
    
    data3 = pd.merge(data1,data2,on='A',how='left')
    data3['时间差'] = abs(data3['告警开始时间']-data3['停电时间'])
    
    result1 = data3.sort_values(by='时间差').groupby(['告警开始时间','A']).first()
    
    result2 = result1.drop('时间差',axis=1)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办