home / github / issues

Menu
  • Search all tables
  • GraphQL API

issues: 445745470

This data as json

id node_id number title user state locked assignee milestone comments created_at updated_at closed_at author_association active_lock_reason draft pull_request body reactions performed_via_github_app state_reason repo type
445745470 MDExOlB1bGxSZXF1ZXN0MjgwMTIwNzIz 2972 ENH: Preserve monotonic descending index order when merging 13662783 open 0     4 2019-05-18T19:12:11Z 2022-06-09T14:50:17Z   CONTRIBUTOR   0 pydata/xarray/pulls/2972
  • Addresses GH2947

  • When indexes were joined in a dataset merge, they would always get sorted in ascending order. This is awkward for geospatial grids, which are nearly always descending in the "y" coordinate.

  • This also caused an inconsistency: when a merge is called on datasets with identical descending indexes, the resulting index is descending. When a merge is called with non-identical descending indexes, the resulting index is ascending.

  • When indexes are mixed ascending and descending, or non-monotonic, the resulting index is still sorted in ascending order.

  • [x] Closes #2947
  • [x] Tests added
  • [ ] Fully documented, including whats-new.rst for all changes and api.rst for new API

Comments

I was doing some work and I kept running into the issue described at #2947, so I had a try at a fix. It was somewhat of a hassle to understand the issue because I kept running into seeming inconsistencies. This is caused by the fact that the joiner doesn't sort with a single index:

python def _get_joiner(join): if join == 'outer': return functools.partial(functools.reduce, operator.or_) That makes sense, since I'm guessing pandas.Index.union isn't get called at all. (I still find the workings of functools a little hard to infer.)

I also noticed that an outer join gets called with e.g. an .isel operation, even though there's only one index (so there's not really anything to join). However, skipping the join completely in that case makes several tests fail since dimension labels end up missing (I guess the joiner call takes care of it).

It's just checking for the specific case now, but it feels like an very specific issue anyway...

The merge behavior is slightly different now, which is reflected in the updated test outcomes in test_dataset.py. These tests were turning monotonic decreasing indexes into an increasing index; now the decreasing order is maintained.

{
    "url": "https://api.github.com/repos/pydata/xarray/issues/2972/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
    13221727 pull

Links from other tables

  • 0 rows from issues_id in issues_labels
  • 4 rows from issue in issue_comments
Powered by Datasette · Queries took 75.375ms · About: xarray-datasette