【问题标题】:TypeError: Type Tuple cannot be instantiated; use tuple() insteadTypeError:无法实例化类型元组;使用 tuple() 代替
【发布时间】:2019-10-25 12:18:04
【问题描述】:

我用下面的代码写了一个程序:

import pandas as pd
import numpy as np
from typing import Tuple

def split_data(self, df: pd.DataFrame, split_quantile: float) -> Tuple(pd.DataFrame, pd.DataFrame):
    '''Split data sets into two parts - train and test data sets.'''
    df = df.sort_values(by='datein').reset_index(drop=True)
    quantile = int(np.quantile(df.index, split_quantile))
    return (
        df[df.index <= quantile].reset_index(drop=True),
        df[df.index > quantile].reset_index(drop=True)
    )

程序返回以下错误:TypeError: Type Tuple cannot be instantiated; use tuple() instead。我知道,我可以通过将Tuple(pd.DataFrame, pd.DataFrame) 替换为tuple() 来解决我的代码,但是我丢失了部分信息,即我的元组将由两个熊猫数据框组成。

您能帮我解决一下错误,同时又不会丢失信息吗?

【问题讨论】:

    标签: python python-3.x typing


    【解决方案1】:

    使用方括号:

    Tuple[pd.DataFrame, pd.DataFrame]
    

    来自docs

    元组类型; Tuple[X, Y] 是两个元素的元组类型,第一个元素是 X 类型,第二个元素是 Y 类型。空元组的类型可以写成 Tuple[()]。

    编辑:With the release of python 3.9,您现在可以使用 builtins.tuple 类型执行此操作,而不必导入 typing。例如:

    >>> tuple[pd.DataFrame, pd.DataFrame]
    tuple[pandas.core.frame.DataFrame, pandas.core.frame.DataFrame]
    

    您仍然必须使用方括号。

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 2019-07-26
      • 2013-09-27
      • 2015-04-30
      • 1970-01-01
      相关资源
      最近更新 更多