astropy.table.hstack(tables, join_type='outer', uniq_col_name='{col_name}_{table_name}', table_names=None, metadata_conflicts='warn')[source]#

Stack tables along columns (horizontally).

A join_type of ‘exact’ means that the tables must all have exactly the same number of rows. If join_type is ‘inner’ then the intersection of rows will be the output. A value of ‘outer’ (default) means the output will have the union of all rows, with table values being masked where no common values are available.

tablesTable or Row or list thereof

Tables to stack along columns (horizontally) with the current table


Join type (‘inner’ | ‘exact’ | ‘outer’), default is ‘outer’

uniq_col_namestr or None

String generate a unique output column name in case of a conflict. The default is ‘{col_name}_{table_name}’.

table_nameslist of str or None

Two-element list of table names used when generating unique output column names. The default is [‘1’, ‘2’, ..].

How to proceed with metadata conflicts. This should be one of:
  • 'silent': silently pick the last conflicting meta-data value

  • 'warn': pick the last conflicting meta-data value, but emit a warning (default)

  • 'error': raise an exception.

stacked_tableTable object

New table containing the stacked data from the input tables.


To stack two tables horizontally (along columns) do:

>>> from astropy.table import Table, hstack
>>> t1 = Table({'a': [1, 2], 'b': [3, 4]}, names=('a', 'b'))
>>> t2 = Table({'c': [5, 6], 'd': [7, 8]}, names=('c', 'd'))
>>> print(t1)
 a   b
--- ---
  1   3
  2   4
>>> print(t2)
 c   d
--- ---
  5   7
  6   8
>>> print(hstack([t1, t2]))
 a   b   c   d
--- --- --- ---
  1   3   5   7
  2   4   6   8