def update(cls, dframe, dataset): """ Update *dataset* by overwriting all observations with the given *dframe*. """ previous_dtypes = cls.find(dataset, as_df=True).dtypes.to_dict() new_dtypes = dframe.dtypes.to_dict().items() cols_to_add = dict([(name, dtype) for name, dtype in new_dtypes if name not in previous_dtypes]) Dataset.update_schema(dataset, cols_to_add) cls.delete(dataset) cls.save(dframe, dataset) return cls.find(dataset, as_df=True)