Pandas基于多列的分层采样

art*_*hur 9 python pandas

我有一个 pandas 数据框,如下所示:

| Cliid | Segment | Insert |
|-------|---------|--------|
| 001   | A       | 0      |
| 002   | A       | 0      |
| 003   | C       | 0      |
| 004   | B       | 1      |
| 005   | A       | 0      |
| 006   | B       | 0      |
Run Code Online (Sandbox Code Playgroud)

我想将其分成 2 组,每组的 [Segment, Insert] 中每个变量的组成都相同。例如,每个组有 1/2 的观测值属于 A 段,1/6 的插入 = 1,依此类推。

我已经检查过这个答案,但它只对一个变量进行分层,它不适用于多个变量。

R 有这个函数可以做到这一点,但使用 R 不是一个选择。

顺便说一下,我使用的是Python 3。

Gus*_*sto 12

您可以使用 sklearn 的train_test_splitstratify函数,其中包含可用于确定要分层的列的参数。

例如:

from sklearn.model_selection import train_test_split

df_train, df_test = train_test_split(df1, test_size=0.2, stratify=df[["Segment", "Insert"]])
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,是我的错。我将 `stratify=[["Segment", "Insert"]]` 更改为 `stratify=df[["Segment", "Insert"]]` (3认同)