训练数据帧列表的测试拆分 - Pandas

Train Test Split for a list of dataframes - Pandas

我有一个 DataFrame 列表,我想将其拆分为训练集和测试集。 对于单个 DataFrame,我可以执行以下操作,

获取测试拆分的长度

split_point = len(df)- 125

然后,

train, test = df[0:split_point], df[split_point:]

这给了我训练和测试拆分。

现在,对于 DataFrame 列表,我可以使用

获得每个 DataFrame 的测试集长度
split_point = [len(df)-125 for df in dfs]  ## THIS WORKS FINE

我想对整个数据帧列表进行 traintest 拆分,就像我对单个数据帧所做的那样。我尝试了以下,

train, test = [(df[0:split_point], df[split_point:]) for df in dfs]

## AND THE FOLLOWING

train, test = [(df[0:split_point] for df in dfs),(df[split_point:]) for df in dfs]

两者都不起作用。我该怎么做?

(有些 DataFrame 的长度可能不同,但我并不担心,因为它会从长度中减去 125,我正在考虑将其用于测试集)

你需要做的

train, test = zip(*[(dfs[i][0:split_point[i]], dfs[i][split_point[i]:]) for i in range(len(dfs))])

那么它们中的每一个都是一个元组,其中包含数据帧的相应部分。

在上面的代码中我使用的是

split_point = [len(df)-125 for df in dfs]

为了更清楚,请考虑以下更简单的示例:

r = [(i,i**2) for i in range(5)]
a,b=zip(*r)

那么a就是(0, 1, 2, 3, 4)b就是(0, 1, 4, 9, 16)