Python如何根据唯一的客户ID将数据帧拆分为两个大小相等的组?
我有一个带有客户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
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
列表。我将更新我的答案。