Как вы должны указать тип данных 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

Методом проб и ошибок я обнаружил, что это шесть элементов:

  1. Тип данных, выраженный как list[int]
  2. Тип индекса, выраженный как list[str]
  3. Казалось бы, все может быть. Ничто из того, что я добавляю в это поле, не заставляет Пайрайта жаловаться.
  4. То же, что и предыдущий аргумент.
  5. Что-то называется __type_of_copy@Series. Я не могу найти никакой информации о том, что это значит.
  6. Что-то называется __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?

0 ответов

Другие вопросы по тегам