Perhaps change the trial assignment to np.array(value)?
The reason to suggest this is that currently assigning one row to another does not work, i.e.,
>>> a=astropy.table.Table(np.zeros((3,3)), names=('a','b','c'))
>>> a[1] = a[2]
(with astropy 0.2: ERROR: KeyError: 'Column 1 does not exist' [astropy.table.table]
with revision: ERROR: TypeError: expected a readable buffer object [mytable])
For either, a[1] = a[2].data 
or a[1] = a._data[2]
works fine.
-- Marten

p.s. Was there a particular reason for Table not to have a data property? (def data(self): return self._data)