|
@@ -45,7 +45,7 @@ class BatDiag:
|
|
|
|
|
|
#获取当前行所有电压数据............................................................................................
|
|
#获取当前行所有电压数据............................................................................................
|
|
def _cellvolt_get(self,num):
|
|
def _cellvolt_get(self,num):
|
|
- cellvolt = np.array(self.df_bms.loc[num,self.cellvolt_name]/1000)
|
|
|
|
|
|
+ cellvolt = list(self.df_bms.loc[num,self.cellvolt_name]/1000)
|
|
return cellvolt
|
|
return cellvolt
|
|
|
|
|
|
#..........................................三元电池诊断功能..................................................................
|
|
#..........................................三元电池诊断功能..................................................................
|
|
@@ -92,7 +92,7 @@ class BatDiag:
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
if celltempmax0<self.param.CellTempHighLv1-5 and celltempmax1<self.param.CellTempHighLv1-5: #二级高温恢复
|
|
if celltempmax0<self.param.CellTempHighLv1-5 and celltempmax1<self.param.CellTempHighLv1-5: #二级高温恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==4].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==4].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -110,7 +110,7 @@ class BatDiag:
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
if celltempmax0>self.param.CellTempLowLv1+2 and celltempmax1>self.param.CellTempLowLv1+2: #二级高温恢复
|
|
if celltempmax0>self.param.CellTempLowLv1+2 and celltempmax1>self.param.CellTempLowLv1+2: #二级高温恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==6].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==6].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -128,7 +128,7 @@ class BatDiag:
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
if (celltempmax0-celltempmin0)<self.param.CellTempDiffLv1-2 and (celltempmax1-celltempmax0)>self.param.CellTempDiffLv1-2: #二级温差恢复
|
|
if (celltempmax0-celltempmin0)<self.param.CellTempDiffLv1-2 and (celltempmax1-celltempmax0)>self.param.CellTempDiffLv1-2: #二级温差恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==8].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==8].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -155,7 +155,7 @@ class BatDiag:
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
if celltemp_rate<self.param.CellTempRate-1: #温升故障恢复
|
|
if celltemp_rate<self.param.CellTempRate-1: #温升故障恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==9].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==9].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
@@ -192,7 +192,7 @@ class BatDiag:
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
else: #ram当前故障中有该故障,则判断是否退出该故障
|
|
if cellvoltmax0<self.param.CellOvLv1-0.05 and cellvoltmax1<self.param.CellOvLv1-0.05: #二级过压故障恢复
|
|
if cellvoltmax0<self.param.CellOvLv1-0.05 and cellvoltmax1<self.param.CellOvLv1-0.05: #二级过压故障恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==12].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==12].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -211,7 +211,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if cellvoltmin0>self.param.CellUvLv1+0.1 and cellvoltmin1>self.param.CellUvLv1+0.1:
|
|
if cellvoltmin0>self.param.CellUvLv1+0.1 and cellvoltmin1>self.param.CellUvLv1+0.1:
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==14].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==14].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -229,7 +229,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if (cellvoltmax0-cellvoltmin0)<self.param.CellVoltDiffLv1-0.05 and (cellvoltmax1-cellvoltmin1)>self.param.CellVoltDiffLv1-0.05: #二级欠压恢复
|
|
if (cellvoltmax0-cellvoltmin0)<self.param.CellVoltDiffLv1-0.05 and (cellvoltmax1-cellvoltmin1)>self.param.CellVoltDiffLv1-0.05: #二级欠压恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==16].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==16].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
@@ -249,7 +249,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if self.packvolt[i-1]<self.param.PackVoltOvLv1-0.05*self.param.CellVoltNums and self.packvolt[i]<self.param.PackVoltOvLv1-0.05*self.param.CellVoltNums: #电池包过压二级恢复
|
|
if self.packvolt[i-1]<self.param.PackVoltOvLv1-0.05*self.param.CellVoltNums and self.packvolt[i]<self.param.PackVoltOvLv1-0.05*self.param.CellVoltNums: #电池包过压二级恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==18].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==18].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -267,7 +267,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if self.packvolt[i-1]>self.param.PackVoltUvLv1+0.1*self.param.CellVoltNums and self.packvolt[i]>self.param.PackVoltUvLv1+0.1*self.param.CellVoltNums: #电池包二级欠压恢复
|
|
if self.packvolt[i-1]>self.param.PackVoltUvLv1+0.1*self.param.CellVoltNums and self.packvolt[i]>self.param.PackVoltUvLv1+0.1*self.param.CellVoltNums: #电池包二级欠压恢复
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==20].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==20].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -294,7 +294,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if self.packcrnt[i-1]<self.param.PackDisOc-10 and self.packcrnt[i]<self.param.PackDisOc-10:
|
|
if self.packcrnt[i-1]<self.param.PackDisOc-10 and self.packcrnt[i]<self.param.PackDisOc-10:
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==22].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==22].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -311,7 +311,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if self.packcrnt[i-1]>self.param.PackChgOc+10 and self.packcrnt[i]>self.param.PackChgOc+10:
|
|
if self.packcrnt[i-1]>self.param.PackChgOc+10 and self.packcrnt[i]>self.param.PackChgOc+10:
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==22].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==22].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -337,7 +337,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if abs(bmssoc_now-bmssoc_st)>self.param.SocClamp: #SOC卡滞故障退出
|
|
if abs(bmssoc_now-bmssoc_st)>self.param.SocClamp: #SOC卡滞故障退出
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==27].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==27].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
bmssoc_st=bmssoc_now
|
|
bmssoc_st=bmssoc_now
|
|
@@ -362,7 +362,7 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if abs(bmssoc_now-bmssoc_st)<self.param.SocJump: #SOC跳变故障退出
|
|
if abs(bmssoc_now-bmssoc_st)<self.param.SocJump: #SOC跳变故障退出
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==28].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==28].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
@@ -371,7 +371,7 @@ class BatDiag:
|
|
#SOC过低故障报警............................................................................................................
|
|
#SOC过低故障报警............................................................................................................
|
|
if not 26 in list(self.df_diag_ram['code']): #当前故障中没有该故障,则判断是否发生该故障
|
|
if not 26 in list(self.df_diag_ram['code']): #当前故障中没有该故障,则判断是否发生该故障
|
|
if self.bms_soc[i-1]<self.param.SocLow and self.bms_soc[i]<self.param.SocLow: #SOC过低故障进入
|
|
if self.bms_soc[i-1]<self.param.SocLow and self.bms_soc[i]<self.param.SocLow: #SOC过低故障进入
|
|
- time=self.bmstime[0]
|
|
|
|
|
|
+ time=self.bmstime[i]
|
|
code=26
|
|
code=26
|
|
faultlv=1
|
|
faultlv=1
|
|
faultinfo='电池包电量过低'
|
|
faultinfo='电池包电量过低'
|
|
@@ -382,28 +382,28 @@ class BatDiag:
|
|
else:
|
|
else:
|
|
if self.bms_soc[i-1]>self.param.SocLow and self.bms_soc[i]>self.param.SocLow: #SOC过低故障退出
|
|
if self.bms_soc[i-1]>self.param.SocLow and self.bms_soc[i]>self.param.SocLow: #SOC过低故障退出
|
|
time=self.bmstime[i]
|
|
time=self.bmstime[i]
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==26].index, 'end_time'] = time
|
|
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==26].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
- #BMS故障报警........................................................................................................
|
|
|
|
- if not 1 in list(self.df_diag_ram['code']): #当前故障中没有该故障,则判断是否发生该故障
|
|
|
|
- if self.bmsfault1[i-1] is None or self.bmsfault1[i] is None:
|
|
|
|
- self.bmsfault1[i-1]=0
|
|
|
|
- self.bmsfault1[i]=0
|
|
|
|
- if self.bmsfault1[i-1]>0 or self.bmsfault1[i]>0: #BMS故障进入
|
|
|
|
- time=self.bmstime[0]
|
|
|
|
- code=1
|
|
|
|
- faultlv=2
|
|
|
|
- faultinfo='BMS故障报警:{}'.format(self.bmsfault1[i-1])
|
|
|
|
- faultadvice='技术介入诊断'
|
|
|
|
- self.df_diag_ram.loc[len(self.df_diag_ram)]=[time, end_time, self.sn, code, faultlv, faultinfo, faultadvice]
|
|
|
|
- else:
|
|
|
|
- pass
|
|
|
|
- else:
|
|
|
|
- if self.bmsfault1[i-1]==0 and self.bmsfault1[i]==0: #BMS故恢复
|
|
|
|
- time=self.bmstime[i]
|
|
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==1].index, 'end_time'] = time
|
|
|
|
|
|
+ # #BMS故障报警........................................................................................................
|
|
|
|
+ # if not 1 in list(self.df_diag_ram['code']): #当前故障中没有该故障,则判断是否发生该故障
|
|
|
|
+ # if self.bmsfault1[i-1] is None or self.bmsfault1[i] is None:
|
|
|
|
+ # self.bmsfault1[i-1]=0
|
|
|
|
+ # self.bmsfault1[i]=0
|
|
|
|
+ # if self.bmsfault1[i-1]>0 or self.bmsfault1[i]>0: #BMS故障进入
|
|
|
|
+ # time=self.bmstime[0]
|
|
|
|
+ # code=1
|
|
|
|
+ # faultlv=2
|
|
|
|
+ # faultinfo='BMS故障报警:{}'.format(self.bmsfault1[i-1])
|
|
|
|
+ # faultadvice='技术介入诊断'
|
|
|
|
+ # self.df_diag_ram.loc[len(self.df_diag_ram)]=[time, end_time, self.sn, code, faultlv, faultinfo, faultadvice]
|
|
|
|
+ # else:
|
|
|
|
+ # pass
|
|
|
|
+ # else:
|
|
|
|
+ # if self.bmsfault1[i-1]==0 and self.bmsfault1[i]==0: #BMS故恢复
|
|
|
|
+ # time=self.bmstime[i]
|
|
|
|
+ # self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==1].index, 'end_time'] = time
|
|
|
|
|
|
|
|
|
|
#SOC一致性故障报警..........................................................................................................
|
|
#SOC一致性故障报警..........................................................................................................
|
|
@@ -414,15 +414,15 @@ class BatDiag:
|
|
time=self.bmstime[0]
|
|
time=self.bmstime[0]
|
|
code=25
|
|
code=25
|
|
faultlv=1
|
|
faultlv=1
|
|
- faultinfo='电芯{}和{}SOC差过大:{}'.format(self.df_uniform.loc[0,'cellmin_num'],self.df_uniform.loc[0,'cellmax_num']),cellsoc_diff
|
|
|
|
|
|
+ faultinfo='电芯{}和{}SOC差过大:{}'.format(self.df_uniform.loc[0,'cellmin_num'],self.df_uniform.loc[0,'cellmax_num'],cellsoc_diff)
|
|
faultadvice='技术介入诊断'
|
|
faultadvice='技术介入诊断'
|
|
self.df_diag_ram.loc[len(self.df_diag_ram)]=[time, end_time, self.sn, code, faultlv, faultinfo, faultadvice]
|
|
self.df_diag_ram.loc[len(self.df_diag_ram)]=[time, end_time, self.sn, code, faultlv, faultinfo, faultadvice]
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
if cellsoc_diff<self.param.SocDiff: #SOC一致性差故障恢复
|
|
if cellsoc_diff<self.param.SocDiff: #SOC一致性差故障恢复
|
|
- time=self.bmstime[i]
|
|
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==25].index, 'end_time'] = time
|
|
|
|
|
|
+ time=self.bmstime[0]
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==25].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
cellsoc_diff=3
|
|
cellsoc_diff=3
|
|
|
|
|
|
@@ -447,8 +447,8 @@ class BatDiag:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
if soh>self.param.SohLow+2: #soh过低故障恢复
|
|
if soh>self.param.SohLow+2: #soh过低故障恢复
|
|
- time=self.bmstime[i]
|
|
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==23].index, 'end_time'] = time
|
|
|
|
|
|
+ time=self.bmstime[0]
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==23].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
|
|
|
|
@@ -464,8 +464,8 @@ class BatDiag:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
if cellsoh_diff<self.param.SohDiff-2:
|
|
if cellsoh_diff<self.param.SohDiff-2:
|
|
- time=self.bmstime[i]
|
|
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==24].index, 'end_time'] = time
|
|
|
|
|
|
+ time=self.bmstime[0]
|
|
|
|
+ self.df_diag_ram.loc[self.df_diag_ram[self.df_diag_ram['code']==24].index, 'end_time'] = time
|
|
else:
|
|
else:
|
|
pass
|
|
pass
|
|
else:
|
|
else:
|
|
@@ -488,70 +488,4 @@ class BatDiag:
|
|
if not df_res.empty:
|
|
if not df_res.empty:
|
|
return df_res
|
|
return df_res
|
|
else:
|
|
else:
|
|
- return pd.DataFrame()
|
|
|
|
-
|
|
|
|
-#............................................................内短路故障诊断.............................................................................
|
|
|
|
-class ShortDiag():
|
|
|
|
- def __init__(self,sn,celltype,df_short): #参数初始化
|
|
|
|
-
|
|
|
|
- self.sn=sn
|
|
|
|
- self.celltype=celltype
|
|
|
|
- self.param=BatParam.BatParam(celltype)
|
|
|
|
- self.df_short=df_short
|
|
|
|
-
|
|
|
|
- def shortdiag(self):
|
|
|
|
- if len(self.df_short)>1:
|
|
|
|
- df_res=self._short_diag()
|
|
|
|
- return df_res
|
|
|
|
- else:
|
|
|
|
- return pd.DataFrame()
|
|
|
|
-
|
|
|
|
- #内短路故障检测...................................................................................................................................
|
|
|
|
- def _short_diag(self):
|
|
|
|
- column_name=['start_time', 'end_time', 'product_id', 'code', 'level', 'info','advice']
|
|
|
|
- df_res=pd.DataFrame(columns=column_name)
|
|
|
|
- time=datetime.datetime.now()
|
|
|
|
- end_time=datetime.datetime.strftime('0000-00-00 00:00:00')
|
|
|
|
- end_time=datetime.datetime.strptime(end_time,'%Y-%m-%d %H:%M:%S')
|
|
|
|
-
|
|
|
|
- # if self.df_diag.empty:
|
|
|
|
- # health_state=100
|
|
|
|
- # else:
|
|
|
|
- # health_state=self.df_diag.loc[0,'health_state']
|
|
|
|
-
|
|
|
|
- for i in range(self.param.CellVoltNums):
|
|
|
|
- #将字符串分割为多列
|
|
|
|
- short_current=self.df_short['short_current']
|
|
|
|
- short_current=short_current.str.replace("[", '')
|
|
|
|
- short_current=short_current.str.replace("]", '')
|
|
|
|
- self.df_short['cellshort'+str(i+1)]=short_current.map(lambda x:x.split(',')[i])
|
|
|
|
- self.df_short['cellshort'+str(i+1)]=self.df_short['cellshort'+str(i+1)].map(lambda x:eval(x))
|
|
|
|
-
|
|
|
|
- #漏电流故障判断
|
|
|
|
- cellshort=np.array(self.df_short['cellshort'+str(i+1)])
|
|
|
|
- shortlv3=np.sum(cellshort>self.param.LeakCurrentLv3)
|
|
|
|
- shortlv2=np.sum(cellshort>self.param.LeakCurrentLv2)-shortlv3
|
|
|
|
- shortlv1=np.sum(cellshort>self.param.LeakCurrentLv1)-shortlv2-shortlv3
|
|
|
|
- shortlv=shortlv3*3 + shortlv2*2 + shortlv1
|
|
|
|
-
|
|
|
|
- if not 31 in list(self.df_diag_ram['code']): #当前故障中没有该故障,则判断是否发生该故障
|
|
|
|
- if shortlv>=5:
|
|
|
|
- time=self.bmstime[0]
|
|
|
|
- code=31
|
|
|
|
- faultlv=3
|
|
|
|
- faultinfo='电芯{}发生严重内短路'.format(i+1)
|
|
|
|
- faultadvice='禁止充放电,检修电池'
|
|
|
|
- self.df_diag_ram.loc[len(self.df_diag_ram)]=[time, end_time, self.sn, code, faultlv, faultinfo, faultadvice]
|
|
|
|
- else:
|
|
|
|
- pass
|
|
|
|
- else:
|
|
|
|
- if shortlv<3:
|
|
|
|
- time=self.bmstime[i]
|
|
|
|
- self.df_diag_ram[self.df_diag_ram[self.df_diag_ram['code']==31].index, 'end_time'] = time
|
|
|
|
-
|
|
|
|
- if not df_res.empty:
|
|
|
|
- return df_res
|
|
|
|
- else:
|
|
|
|
- return pd.DataFrame()
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ return pd.DataFrame()
|