@@ -86,6 +86,7 @@ def _test_filter_previous(self):
8686
8787 return df
8888
89+
8990 def datetime2dataframe (self , datetime_list ):
9091 """ Converts datetime_list to a pandas Dataframe
9192
@@ -141,19 +142,47 @@ def filter_date(self, before, after):
141142 if before and after :
142143 self .filtered_dataframe = df [(df .index < before ) & (df .index > after )]
143144
145+ def fill_gap (self , gap , period ):
146+
147+ df = self .memDB .getDataValuesDF ()
148+ gaps = self .find_gaps (df , gap , period )
149+ points = []
150+ series = self .memDB .series
151+ timegap = np .timedelta64 (gap , self .time_units [period ])
152+
153+ for g in gaps .iterrows ():
154+ row = g [0 ]
155+ e = row ["datetime" ]
156+ s = row ["prevdate" ]
157+ print (s )
158+ print (e )
159+
160+ # for each gap time period in the larger gap ( until datetime = prev value)
161+ while s != e :
162+ s = s + timegap
163+ points .append (('-9999' , None , s , series .begin_date_time_utc , s , None , None , u'nc' , None , None , series .site_id , series .variable_id , series .method_id , series .source_id , series .quality_control_level_id ))
164+ #add a row points.append() [('-9999', None, datetime.datetime(2007, 9, 28, 0, 10), '-7', datetime.datetime(2007, 9, 28, 7, 10), None, None, u'nc', None, None, 1, 4, 2, 1, 0)
165+ #('-9999', None, DATE, series.begin_date_time_utc, UTCDATE, None, None, u'nc', None, None, series.site_id, series.variable_id, series.method_id, series.source_id, series.quality_control_level_id
166+
167+
168+ self .add_points (points )
169+
170+ time_units = {
171+ 'second' : 's' ,
172+ 'minute' : 'm' ,
173+ 'hour' : 'h' ,
174+ 'day' : 'D' ,
175+ 'week' : 'W' ,
176+ 'month' : 'M' ,
177+ 'year' : 'Y'
178+ }
179+
144180 # Data Gaps
145- def data_gaps (self , value , time_period ):
146- df = self ._test_filter_previous ()
147181
148- time_units = {
149- 'second' : 's' ,
150- 'minute' : 'm' ,
151- 'hour' : 'h' ,
152- 'day' : 'D' ,
153- 'week' : 'W' ,
154- 'month' : 'M' ,
155- 'year' : 'Y'
156- }
182+
183+ def find_gaps (self , df , value , time_period ):
184+
185+
157186
158187 # make a copy of the dataframe in order to modify it to be in the form we need to determine data gaps
159188 copy_df = df
@@ -165,19 +194,29 @@ def data_gaps(self, value, time_period):
165194 value = int (value )
166195
167196 # create a bool column indicating which rows meet condition
168- filtered_results = copy_df ['datetime' ].diff () >= np .timedelta64 (value , time_units [time_period ])
197+ filtered_results = copy_df ['datetime' ].diff () > np .timedelta64 (value , self . time_units [time_period ])
169198
170199 # filter on rows that passed previous condition
171- copy_df = copy_df [filtered_results ]
200+ return copy_df [filtered_results ]
201+
202+
172203
204+
205+ def data_gaps (self , value , time_period ):
206+ df = self ._test_filter_previous ()
207+ copy_df = self .find_gaps (df , value , time_period )
208+ print (copy_df )
173209 # merge values and remove duplicates. this hack allows for both values to be marked when selecting data gaps
174210 newdf = pd .concat ([copy_df ['datetime' ], copy_df ['dateprev' ]], join = 'inner' )
175- self .filtered_dataframe = df [df .index .isin (newdf .drop_duplicates ().dropna ())]
176211
177212 # clean up
178213 del copy_df
179- del filtered_results
180- del newdf
214+
215+
216+ self .filtered_dataframe = df [df .index .isin (newdf .drop_duplicates ().dropna ())]
217+
218+
219+
181220
182221 def change_value_threshold (self , value , operator ):
183222
0 commit comments