我具有以下数据框:
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))
但是能够一次完成整个数据帧是我似乎无法弄清楚的地方。