对dataframe.groupby()的结果进行抽样

时间:2018-03-14 09:35:03

标签: pandas dataframe pandas-groupby

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

      Col1      Col2      Col3
        1         A         1
        1         B         4
        1         C         5
        1         D         2
        2         A         3
        2         B         3
        2         C         5
        2         D         1
        3         A         4
        3         B         5
        3         C         2
        3         D         3

我面临着以下任务的问题:

  • 将数据框分组为两个数据框,按“Col1”值按1:1的比例分组。

所以结果如下:

Dataframe1

      Col1      Col2      Col3
        1         B         4
        1         D         2
        2         A         3
        2         B         3
        3         A         4
        3         B         5

Dataframe2

      Col1      Col2      Col3
        1         A         1
        1         C         5
        2         C         5
        2         D         1
        3         C         2
        3         D         3

1 个答案:

答案 0 :(得分:1)

你可以做到

In [230]: dfs = {n: g for n, g in df.groupby(df.groupby('Col1').cumcount() % 2)}  # or // 2

In [231]: dfs[0]
Out[231]:
    Col1 Col2  Col3
0      1    A     1
2      1    C     5
4      2    A     3
6      2    C     5
8      3    A     4
10     3    C     2

In [232]: dfs[1]
Out[232]:
    Col1 Col2  Col3
1      1    B     4
3      1    D     2
5      2    B     3
7      2    D     1
9      3    B     5
11     3    D     3