Pass arbitrary options to sel()
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.2k
- Forks
- 1.4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 14
Description
Is your feature request related to a problem?
Currently .sel() accepts two options method and tolerance. These are relevant for default (pandas) indexes but not necessarily for other, custom indexes.
It would be also useful for custom indexes to expose their own selection options, e.g.,
- index query optimization like the
dualtreeflag of sklearn.neighbors.KDTree.query - k-nearest neighbors selection with the creation of a new "k" dimension (+ coordinate / index) with user-defined name and size.
From #3223, it would be nice if we could also pass distinct options values per index.
What would be a good API for that?
Describe the solution you'd like
Some ideas:
A. Allow passing a tuple (labels, options_dict) as indexer value
ds.sel(x=([0, 2], {"method": "nearest"}), y=3)
B. Expose an options kwarg that would accept a nested dict
ds.sel(x=[0, 2], y=3, options={"x": {"method": "nearest"}})
Option A does not look very readable. Option B is slightly better, although the nested dictionary is not great.
Any other ideas? Some sort of context manager? Some Index specific API?
Describe alternatives you've considered
The API proposed in #3223 would look great if method and tolerance were the only accepted options, but less so for arbitrary options.
Additional context
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the .sel() entry point and the custom Index API, then review issue #3223 for prior API constraints. Compare the proposed tuple and nested-options approaches, and define the accepted API and per-index behavior before implementation; done means the chosen design is documented and supports arbitrary custom-index options.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- pandas, python, scikit-learn
- Domain
- backend-api-design, data
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100