|
@@ -0,0 +1,53 @@
|
|
|
+import pandas as pd
|
|
|
+
|
|
|
+
|
|
|
+class FilterValidData:
|
|
|
+ def __init__(self, df, rated_power):
|
|
|
+ self.df = df
|
|
|
+ self.rated_power = rated_power
|
|
|
+
|
|
|
+ def run(self):
|
|
|
+ # 定义所有条件(列名: (是否包含最小值, 最小值, 是否包含最大值, 最大值))
|
|
|
+ final_condition = pd.Series(True, index=self.df.index)
|
|
|
+ conditions = [
|
|
|
+ ('active_power', False, -200, False, self.rated_power * 1.3), # > -200 且 < rated_power*1.3
|
|
|
+ ('rotor_speed', True, 0, False, 25), # >=0 且 <25
|
|
|
+ ('generator_speed', True, 0, False, 2500), # >=0 且 <2500
|
|
|
+ ('wind_velocity', True, 0, False, 80), # >=0 且 <80
|
|
|
+ ('pitch_angle_blade_1', False, -300, False, 300), # > -300 且 <300
|
|
|
+ ('pitch_angle_blade_2', False, -300, False, 300), # > -300 且 <300
|
|
|
+ ('pitch_angle_blade_3', False, -300, False, 300), # > -300 且 <300
|
|
|
+ ('main_bearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('gearbox_oil_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('gearbox_low_speed_shaft_bearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('gearboxmedium_speed_shaftbearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('gearbox_high_speed_shaft_bearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('generatordrive_end_bearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('generatornon_drive_end_bearing_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('cabin_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('outside_cabin_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('generator_winding1_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('generator_winding2_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ('generator_winding3_temperature', False, -50, False, 200), # > -50 且 <200
|
|
|
+ ]
|
|
|
+
|
|
|
+ for col, include_min, min_val, include_max, max_val in conditions:
|
|
|
+ if col not in self.df.columns:
|
|
|
+ continue # 如果列不存在,跳过
|
|
|
+
|
|
|
+ # 处理最小值条件
|
|
|
+ if include_min:
|
|
|
+ min_cond = (self.df[col] >= min_val)
|
|
|
+ else:
|
|
|
+ min_cond = (self.df[col] > min_val)
|
|
|
+
|
|
|
+ # 处理最大值条件
|
|
|
+ if include_max:
|
|
|
+ max_cond = (self.df[col] <= max_val)
|
|
|
+ else:
|
|
|
+ max_cond = (self.df[col] < max_val)
|
|
|
+
|
|
|
+ # 组合条件
|
|
|
+ final_condition &= (min_cond & max_cond)
|
|
|
+
|
|
|
+ return self.df[final_condition]
|