diff --git a/aosstower/level_00/influxdb.py b/aosstower/level_00/influxdb.py
index 4dee9a4fd4b5fb50389517b0538a4862fc97922d..541281b99248c4cc008eb551b0ae64fd431dea27 100644
--- a/aosstower/level_00/influxdb.py
+++ b/aosstower/level_00/influxdb.py
@@ -92,9 +92,8 @@ class Updater(object):
             return self._calculate_averages()
 
     def _calculate_averages(self):
-        index = self.data.pop('timestamp')
-        frame = pd.DataFrame(self.data, index=index)
-        frame.mask(frame == -99999., inplace=True)
+        frame = pd.DataFrame(self.data)
+        frame = frame.set_index('timestamp').mask(frame == -99999.)
         # Add wind direction components so we can average wind direction properly.
         frame['wind_east'], frame['wind_north'], _ = calc.wind_vector_components(frame['wind_speed'],
                                                                                  frame['wind_dir'])
@@ -112,8 +111,8 @@ class Updater(object):
         frame['wind_dir_2m'] = calc.wind_vector_degrees(winds_frame_2m['wind_east'], winds_frame_2m['wind_north'])
         # Makes 2 minute averages nans if given less than 2 minutes of data.
         if len(frame[frame.index > frame.index[-1] - timedelta(minutes=2)]) < 120 / self.data_interval:
-            frame['wind_speed_2m'].mask(frame['wind_speed_2m'] > -1., inplace=True)
-            frame['wind_dir_2m'].mask(frame['wind_dir_2m'] > -1., inplace=True)
+            frame['wind_speed_2m'] = frame['wind_speed_2m'].mask(frame['wind_speed_2m'] > -1.)
+            frame['wind_dir_2m'] = frame['wind_dir_2m'].mask(frame['wind_dir_2m'] > -1.)
         # 1 minute rolling peaks
         wind_peak_1m = frame['wind_speed'].rolling(window='1T', closed='right').max()
         # criteria for a fast wind to be considered a wind gust
@@ -123,7 +122,7 @@ class Updater(object):
         frame['gust_10m'] = calculate_wind_gust(frame['wind_speed'], winds_frame_2m['wind_speed'])
         # Makes 10 minute gusts before 12 minutes nans because data is insufficient.
         if len(frame) < 720 / self.data_interval:
-            frame['gust_10m'].mask(frame['gust_10m'] > -1., inplace=True)
+            frame['gust_10m'] = frame['gust_10m'].mask(frame['gust_10m'] > -1.)
         return frame.fillna(value=np.nan)
 
 
diff --git a/aosstower/level_b1/nc.py b/aosstower/level_b1/nc.py
index c85f9a76b1a9625a0cafbff07b5f74794da5a51e..5b9c96d2f19fe2d2e9a52b8bce0f3f8eae1eb51a 100644
--- a/aosstower/level_b1/nc.py
+++ b/aosstower/level_b1/nc.py
@@ -37,9 +37,7 @@ def _get_data(input_files):
 
 def get_data(input_files):
     frame = pd.DataFrame(_get_data(input_files))
-    frame.set_index('stamp', inplace=True)
-    frame.mask(frame == -99999., inplace=True)
-    frame.fillna(value=np.nan, inplace=True)
+    frame = frame.set_index('stamp').mask(frame == -99999.).fillna(value=np.nan)
     return frame
 
 
@@ -103,12 +101,11 @@ def create_giant_netcdf(input_files, output_fn, zlib, chunk_size,
 
     # average the values
     if summary:
-        frame = summary_over_interval(new_frame, interval_width)
+        frame = summary_over_interval(new_frame, interval_width).fillna(np.nan)
     else:
-        frame = new_frame.resample(interval_width, closed='right', loffset=interval_width).mean()
+        frame = new_frame.resample(interval_width, closed='right', loffset=interval_width).mean().fillna(np.nan)
         frame['wind_dir'] = calc.wind_vector_degrees(frame['wind_east'], frame['wind_north'])
         frame['gust'] = new_frame['gust'].resample(interval_width, closed='right', loffset=interval_width).max()
-    frame.fillna(np.nan, inplace=True)
 
     if start and end:
         frame = frame[start.strftime('%Y-%m-%d %H:%M:%S'): end.strftime('%Y-%m-%d %H:%M:%S')]