pandas 3.0: three remaining set_index(<str column>.values) calls still raise TypeError (custom-labels paths)
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
Piste de recherche
Lisez les trois appels à set_index dans wfdb/io/annotation.py, autour de label_triplets_to_df, set_custom_labels et get_contained_labels. Reproduisez le problème avec pandas 2.2.3 en utilisant pd.set_option("future.infer_string", True) et exercez les chemins des étiquettes personnalisées. Le travail est terminé lorsque les trois chemins fonctionnent sans le TypeError signalé avec la sémantique des chaînes de pandas.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
#561 (v4.3.1) fixed the module-level ann_class_table.set_index(...) that crashed import wfdb under pandas 3 string semantics — thank you! However, three sibling patterns remain in wfdb/io/annotation.py (checked on main and in the v4.3.1 sdist), all passing a string column's .values directly as set_index keys:
- line ~728 (
label_triplets_to_dfregion):custom_labels.set_index(custom_labels["label_store"].values, inplace=True) - line ~1325 (
set_custom_labels/ DataFramecustom_labelspath):self.custom_labels.set_index(self.custom_labels["label_store"].values, inplace=True) - line ~1347 (
get_contained_labelsregion):label_map.set_index(label_map["symbol"].values, inplace=True)
With pandas' new string dtype (pandas 3.0, or 2.x with pd.set_option("future.infer_string", True)), Series.values is an ArrowStringArrayNumpySemantics, which DataFrame.set_index rejects:
TypeError: The parameter "keys" may be a column key, one-dimensional array, or a list containing only valid column keys and one-dimensional arrays.
These are runtime paths (annotation objects with custom labels), so import wfdb now succeeds, but the custom-label functionality still breaks once pandas 3 is the default.
Reproduce
import pandas as pd
pd.set_option("future.infer_string", True)
import wfdb
from wfdb.io.annotation import Annotation
# any path that reaches set_custom_labels / label_triplets_to_df with a
# DataFrame of custom labels -> TypeError above
(Versions: pandas 2.2.3 with the option / pandas 3.0; wfdb 4.3.1 and current main.)
Suggested fix
Pass the column label instead of the array — identical semantics on every pandas version (the keys are the column's values either way):
custom_labels.set_index("label_store", inplace=True)
self.custom_labels.set_index("label_store", inplace=True)
label_map.set_index("symbol", inplace=True)
Happy to open a PR with these three one-line changes if useful.
(Context: downstream ECG libraries, e.g. DeepPSP/torch_ecg, still pin pandas < 3 partly on this; a fix would help unblock the pandas-3 migration.)
- Langage dominant
- Jupyter Notebook
- Étoiles
- 853
- Forks
- 324
- Merge moyen
- 17 h 39 min
- PR mergées (30 j)
- 10
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de MIT-LCP/wfdb-python
-
Difficulté 1/5 1-3 heures Accessibilité débutants 83/100
MIT-LCP/wfdb-python#594 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
MIT-LCP/wfdb-python#590 ·
Les mainteneurs répondent en général sous 1 jour
-
`find_local_peaks` ignores the sample at `i + radius`, so points on a rising slope are returned as peaksPeut-être pris @rmz-oz l’a pris il y a 27 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
MIT-LCP/wfdb-python#572 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
MIT-LCP/wfdb-python#595 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 67/100
MIT-LCP/wfdb-python#593 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de MIT-LCP/wfdb-python
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
step.duration reflects only the last retry attempt (HelperStep.run() overwrites startTime)Peut-être pris @mirao l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
codeceptjs/CodeceptJS#5774 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
bug mac アプリ: コード アプリ: チャット 優先: 中 要トリアージ
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
yksr-melt/Meltype#1346 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
aws/context-ontology-accelerator#336 ·
Les mainteneurs répondent en général sous 1 jour
-
b:minor bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
software-mansion/argent#1698 ·
Les mainteneurs répondent en général sous 1 jour