Python如何根据唯一的客户ID将数据帧拆分为两个大小相等的组?

Python如何根据唯一的客户ID将数据帧拆分为两个大小相等的组?,python,pandas,split,dataframe,Python,Pandas,Split,Dataframe,我有一个带有客户ID的交易数据框架,如下所示 ID 1 1 1 2 2 3 3 3 3 4 4 我想随机将此数据集划分为另外两个数据集(data1和data2),这两个数据集的唯一ID数相同 对于数据1: ID 2 2 4 4 对于数据2: ID 1 1 1 3 3 3 3 如何在python/pandas中轻松实现这一点? 谢谢。获取列表中的唯一ID,并将列表分成两半: In [28]: import random In [29]: df Out[29]: ID 0 1

我有一个带有客户ID的交易数据框架,如下所示

ID
1
1
1
2
2
3
3
3
3
4
4
我想随机将此数据集划分为另外两个数据集(
data1
data2
),这两个数据集的唯一ID数相同

对于
数据1

ID
2
2
4
4
对于
数据2

ID
1
1
1
3
3
3
3
如何在python/pandas中轻松实现这一点?
谢谢。

获取列表中的唯一ID,并将列表分成两半:

In [28]: import random

In [29]: df
Out[29]: 
    ID
0    1
1    1
2    1
3    2
4    2
5    3
6    3
7    3
8    3
9    4
10   4

In [32]: ids = df.ID.unique()

In [33]: random.shuffle(ids)

In [34]: n = len(ids)

In [35]: ids1, ids2 = ids[:n/2], ids[n/2:]

In [36]: ids1
Out[36]: array([1, 2])

In [37]: ids2
Out[37]: array([3, 4])

In [39]: df1 = df[df.ID.isin(ids1)]

In [40]: df2 = df[df.ID.isin(ids2)]

In [41]: df1
Out[41]: 
   ID
0   1
1   1
2   1
3   2
4   2

In [42]: df2
Out[42]: 
    ID
5    3
6    3
7    3
8    3
9    4
10   4

这不会产生两个随机数据帧。我的数据是有序的,因此遵循此方法将产生两个有序的数据集。您可以洗牌
ids
列表。我将更新我的答案。