Как вы должны указать тип данных Pandas Series с Pyright?
Кажется, что в Интернете очень мало документации об использовании подсказок типа Python с объектами Pandas.
Я хотел бы указать типы данных и индекса серии.
Путем некоторого реверс-инжиниринга мне удалось найти спецификацию, которой Пайрайт доволен, но мне непонятно, что должны представлять некоторые из аргументов типа.
Мой наивный подход был бы примерно таким:
import pandas as pd
s: pd.Series[int, str] = pd.Series(
[1, 2], index=["a", "b"]
)
Пайрайт говорит, что ожидает шести аргументов:
Too few type arguments provided for class "Series"; expected 6 but received 2
Методом проб и ошибок я обнаружил, что это шесть элементов:
- Тип данных, выраженный как
list[int]
- Тип индекса, выраженный как
list[str]
- Казалось бы, все может быть. Ничто из того, что я добавляю в это поле, не заставляет Пайрайта жаловаться.
- То же, что и предыдущий аргумент.
- Что-то называется
__type_of_copy@Series
. Я не могу найти никакой информации о том, что это значит. - Что-то называется
__type_of_fastpath@Series
. Я тоже ничего не могу найти по этому поводу.
Ибо, кажется, хочет
bool
types, поэтому я наконец могу выразить свой тип Series следующим образом:
s: pd.Series[list[float], list[str], None, None, bool, bool] = pd.Series(
[1, 2], index=["a", "b"]
)
Но мне это кажется довольно безумным. Мои вопросы:
- Почему это так не задокументировано?
- Что
__type_of_copy
и__type_of_fastpath
? - Это общепринятый способ подсказок типов для серии Pandas?