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

时间:2014-11-18 23:04:35

标签: python pandas split dataframe

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

ID
1
1
1
2
2
3
3
3
3
4
4

我希望随机将此数据集划分为2个其他数据集(data1data2,这些数据集具有相同数量的唯一ID 。分割是随机的很重要。输出可以如下

data1

ID
2
2
4
4

data2

ID
1
1
1
3
3
3
3

如何轻松地在python / pandas中执行此操作? 感谢。

1 个答案:

答案 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