def union other_df
      index = (@index.to_a + other_df.index.to_a).uniq
      df = row[*(@index.to_a - other_df.index.to_a)]

      df = df.concat(other_df)
      df.index = Daru::Index.new(index)
      df
    end
Concatenates another DataFrame as #concat.
Additionally it tries to preserve the index. If the indices contain
common elements, #union will overwrite the according rows in the
first dataframe.