Dataframe extension integration

Careful not to leave open files if an exception occurs (e.g. while loading the dataframe). In this case, since there are multiple files, we can't use a `with`, so a `try` ... `finally` is safest.