【发布时间】:2020-01-11 06:36:21
【问题描述】:
我的函数返回一个熊猫系列,其中所有元素都有特定的类型(比如str)。下面的 MWE 应该会给人一个印象:
import pandas as pd
def f() -> pd.Series:
return pd.Series(['a', 'b'])
在我想明确的类型提示中,f()[0] 将始终是str 类型(例如,与返回pd.Series([0, 1]) 的函数相比)。我这样做了:
def f() -> pd.Series[str]:
但是
TypeError: 'type' object is not subscriptable
那么,如何在类型提示中指定 pandas 系列元素的类型呢?有什么想法吗?
【问题讨论】:
-
pd.Series(dtype=str)允许您指定系列元素的数据类型。我的猜测是这也适用于类型提示。 -
pd.Series(dtype=str)不适用于类型提示。 -
熊猫中有“str”类型吗?不确定,根据pbpython.com/pandas_dtypes.html(但可能已弃用?)
-
@ItamarMushkin:只是出于好奇,您为什么认为
pd.Series(dtype=str)不适用于类型提示?我的 3.7 解释器至少在语法上接受它。 -
@jottbe -- 它不是有效的 PEP 484 类型。因此,虽然没有什么能阻止您编写这样的类型提示,但它最终会导致任何旨在分析 PEP 484 类型提示的工具阻塞。 (静态类型检查器、linter、自动完成工具......)。失去对这些工具的访问权限会大大降低类型提示的实用性,以至于您最好根本不使用它们。
标签: python pandas series type-hinting