Подтвердить что ты не робот

Подсказки Pythonic типа с помощью pandas?

Возьмем простую функцию, которая берет str и возвращает dataframe:

import pandas as pd
def csv_to_df(path):
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#')

Каков рекомендуемый питонический способ добавления типов подсказок к этой функции?

Если я задаю python для типа DataFrame, он возвращает pandas.core.frame.DataFrame. Однако следующее не будет работать, так как это скажет мне, что pandas не определен.

 def csv_to_df(path: str) -> pandas.core.frame.DataFrame:
     return pd.read_csv(path, skiprows=1, sep='\t', comment='#')
4b9b3361

Ответ 1

Почему бы просто не использовать pd.DataFrame?

import pandas as pd
def csv_to_df(path: str) -> pd.DataFrame:
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#')

Результат тот же:

> help(csv_to_df)
Help on function csv_to_df in module __main__:
csv_to_df(path:str) -> pandas.core.frame.DataFrame

Ответ 2

В настоящее время я делаю следующее:

from typing import TypeVar
PandasDataFrame = TypeVar('pandas.core.frame.DataFrame')
def csv_to_df(path: str) -> PandasDataFrame:
    return pd.read_csv(path, skiprows=1, sep='\t', comment='#')

Что дает:

> help(csv_to_df)
Help on function csv_to_df in module __main__:

csv_to_df(path:str) -> ~pandas.core.frame.DataFrame

Не знаю, как это pythonic, но это понятно, как подсказка типа. Я нахожу.