我有一个包含客户 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 中轻松地做到这一点? 谢谢。
最佳答案
获取列表中的唯一 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
关于Python如何根据唯一的客户ID将数据框分成两个大小相等的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005833/