'Add a new row to the end of the table.
The ``vals`` argument can be:
sequence (e.g. tuple or list)
Column values in the same order as table columns.
mapping (e.g. dict)
Keys corresponding to column names.  Missing values will be
filled with np.zeros for the column dtype.
`None`
All values filled with np.zeros for the column dtype.
This method requires that the Table object "owns" the underlying array
data.  In particular one cannot add a row to a Table that was
initialized with copy=False from an existing array.
The ``mask`` attribute should give (if desired) the mask for the
values. The type of the mask should match that of the values, i.e. if
``vals`` is an iterable, then ``mask`` should also be an iterable
with the same length, and if ``vals`` is a mapping, then ``mask``
should be a dictionary.
Parameters
vals : tuple, list, dict or `None`
Use the specified values in the new row
mask : tuple, list, dict or `None`
Use the specified mask values in the new row
Examples
Create a table with three columns \'a\', \'b\' and \'c\'::
>>> t = Table([[1,2],[4,5],[7,8]], names=(\'a\',\'b\',\'c\'))
>>> print(t)
a   b   c
1   4   7
2   5   8
Adding a new row with entries \'3\' in \'a\', \'6\' in \'b\' and \'9\' in \'c\'::
>>> t.add_row([3,6,9])
>>> print(t)
a   b   c
1   4   7
2   5   8
3   6   9'

def add_row(self, vals=None, mask=None):

    self.insert_row(len(self), vals, mask)
