我用以下代码编写了一个程序:

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()来解决我的代码,但是我丢失了一部分信息,即我的元组将由两个数据帧组成.

你能帮我解决这个错误,同时又不丢失信息吗?

推荐答案

使用方括号:

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]

你仍然需要使用方括号.

Python-3.x相关问答推荐

我在创建Pandas DataFrame时感到困惑

Pandas :从元组字典创建数据帧

为什么在Python中使用RANDINT函数时会出现此TypeError?

我没有';无法理解此TemplateDoesNotExist错误

无法导入名称';核心';来自部分初始化的模块';tensorflow_datasets';(很可能是由于循环导入)

在特定条件下从 DataFrame 中提取特定组

使用 NaN 计算 pct_change 时如何避免 bfill 或 ffill

这种类型提示有什么作用?

使用 OpenCV 从图像中减go 一条线

为什么 Multiprocessing 的 Lock 不会阻止其他进程使用对象?

使用大型多个数据集,其中每个数据集包含多个值 - Pytorch

SqlAlchemy - 从 oracle db 中检索长文本

保存 StandardScaler() 模型以用于新数据集

多个返回函数的列表理解?

multiprocessing.Queue 中的 ctx 参数

如何在 Python 3 中通过 IP 获取 WhoIs 信息?

Pylint 给我最后的新行丢失

plt.cm.get_cmap 中可以使用哪些名称?

没有名为urlparse的模块,但我没有使用 urlparse

如何更改 tkinter 文本小部件中某些单词的 colored颜色 ?