Your `data` looks like an `EventSeries` to me. Therefore let's treat it like one.

    es = EventSeries[data /. "x" -> Missing[], 
      MissingDataMethod -> {"Interpolation", InterpolationOrder -> 0}]

    es["Path"]

>     {{978220800, 7.78}, {978307200, 5.}, {978393600, 5.}, {978480000, 5.}, {979516800, 5.}, 
     {979603200, 3.89}, {979689600, 3.89}, {979862400, 2.22}}

Or

    es["DatePath"] // Normal
>     {{{1931, 1, 1, 0, 0, 0.}, 7.78}, {{1931, 1, 2, 0, 0, 0.}, 5.}, 
     {{1931, 1, 3, 0, 0, 0.}, 5.}, {{1931, 1, 4, 0, 0, 0.}, 5.}, 
     {{1931, 1, 16, 0, 0, 0.}, 5.}, {{1931, 1, 17, 0, 0, 0.}, 3.89}, 
     {{1931, 1, 18, 0, 0, 0.}, 3.89}, {{1931, 1, 20, 0, 0, 0.}, 2.22}}


----------
`AbsoluteTiming`s for a list with 15492 entries, 37 % containing `"x"`:

 - `ReplaceRepeated`: *still running ...*
 - `Map`: 0.0268449
 - `Scan`: 0.0581277
 - `FoldList`: 0.123955
 - `EventSeries`: 0.727509