code: def query(self, expr, **kwargs):
          
          columns = self.columns
  
          def query_builder(df, **kwargs):
              # This is required because of an Arrow limitation
              # TODO revisit for Arrow error
              df = df.copy()
              df.index = pandas.RangeIndex(len(df))
              df.columns = columns
              df.query(expr, inplace=True, **kwargs)
              df.columns = pandas.RangeIndex(len(df.columns))
              return df
  
          func = self._prepare_method(query_builder, **kwargs)
          new_data = self._map_across_full_axis(1, func)
          # Query removes rows, so we need to update the index
          new_index = self.compute_index(0, new_data, True)
  
          return self.__constructor__(new_data, new_index, self.columns, self.dtypes)
docs: Query columns of the DataManager with a boolean expression.
  
          Args:
              expr: Boolean expression to query the columns with.
  
          Returns:
              DataManager containing the rows where the boolean expression is satisfied.