在数据框内从分组依据的列表中随机选择

时间:2019-05-22 08:51:27

标签: python pandas python-2.7 dataframe

我具有以下数据框:

    C1  C2  C3  gender  IDs
0   0   0   0   female  [00059D31, 00323778, 004CDD47, 00608522, 00694...
1   0   0   0   male    [00042219, 00071980, 00071980, 00114815, 00114...
2   0   0   1   female  [0004F073, 0004F073, 000A2CDD, 0033D44C, 0039B...
3   0   0   1   male    [000CEE10, 000FAB88, 00251C13, 00251C13, 00385...
4   0   0   2   female  [00045C9A, 00061B12, 00091CAD, 000FF75E, 00128...
5   0   0   2   male    [0002ABE1, 000F4907, 00126209, 00157214, 001A4...
6   0   0   3   female  [00065CF6, 000A1EDA, 0012D740, 0026EC6C, 002C4...
7   0   0   3   male    [0021B7FC, 0033A65E, 00369716, 0040046F, 00473...
8   0   0   4   female  [000D235A, 000D235A, 000D235A, 00193B91, 00198...
9   0   0   4   male    [0000145B, 00180695, 001B5416, 001ED3D2, 00228...
10  0   0   5   female  [0019D1EE, 0019D1EE, 0029CF97, 003FA040, 00630...
11  0   0   5   male    [00038903, 00111C67, 001E523A, 003C2FB4, 003C2...
12  0   0   6   female  [000936A2, 000A768F, 000F61C0, 0020DF40, 002AD...
13  0   0   6   male    [0004E632, 000E00B6, 00227AF6, 002548F2, 002AB...
14  0   0   7   female  [0003BB79, 00104846, 002FA4DB, 0055F2DA, 00567...
15  0   0   7   male    [000E60A4, 000E60A4, 0017EF71, 002AE85F, 002B2...

此数据帧是按[C1, C2, C3]分组的结果。

这是我要在每个组中执行的操作(例如:[C1,C2,C3]==[0,0,0])。通常,女性身份证件的数量少于男性。我想随机挑选(替换)与女性相同数量的男性。如果组中的女性人数多于男性人数,我们仍然会匹配女性人数。

两个注意事项:

1-您可能有没有男性或女性名单,只有一个或另一个的小组。在这种情况下,我们什么也不做,返回NaN

2-结果列表应显示为名为“ Random_IDs”的额外列。在这种情况下,女性名单应该完全相同,因为我们只是从男性名单中随机选择以匹配女性人数。

我知道我可以从男性列表中随机选择与女性列表中相同的数字,如下所示:

random.choices(male_list, k=len(female_list))

但是能够一次完成整个数据帧是我似乎无法弄清楚的地方。

0 个答案:

没有答案