我有一个包含客户ID的交易数据框,如下所示
ID
1
1
1
2
2
3
3
3
3
4
4
我希望随机将此数据集划分为2个其他数据集(data1
和data2
,这些数据集具有相同数量的唯一ID 。分割是随机的很重要。输出可以如下
data1
:
ID
2
2
4
4
data2
:
ID
1
1
1
3
3
3
3
如何轻松地在python / pandas中执行此操作? 感谢。
答案 0 :(得分:2)
在列表中获取唯一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