excel1:
excel2:
输出新的dataframe(excel3):
具体连接:按照A值将exce1和excel2两表连接成一个新表excel3, 连接条件为excel1表中“告警开始时间”与excel2表中“停电时间”最接近的值对应的行相连接,放在excel1生成新表excel3,是否可用apply和merge函数实现,具体代码求助
excel1:
excel2:
输出新的dataframe(excel3):
具体连接:按照A值将exce1和excel2两表连接成一个新表excel3, 连接条件为excel1表中“告警开始时间”与excel2表中“停电时间”最接近的值对应的行相连接,放在excel1生成新表excel3,是否可用apply和merge函数实现,具体代码求助
试下这样看是否可以:
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)