分组随机采样 事例:随机抽取扑克牌

# -*- coding: utf-8 -*-
"""
Created on Wed Jul  4 17:14:41 2018

@author: Administrator
"""

'''随机采样'''
'''21点计数
H 红桃
S 黑桃
C 梅花
D 方片'''

import pandas as pd
import numpy as np

# 扑克得分矩阵
card_soccer = pd.DataFrame(np.reshape(([x for x in range(1,11)]+ [10]*3)*4,(4,13)),
                 index=[x for x in 'HSCD'],
                 columns=['A']+[x for x in range(2,11)]+[x for x in 'JQK'])
''' 随机抽选5张牌'''
five_in_all = card_soccer.unstack().take(np.random.permutation(52))[:5]

'''每种花色中随机抽选两张牌'''
# 随机抽取n个
def ran_loc(se ,n =5):
    return se.take(np.random.permutation(len(se)))[:n]
# 根据level分组选取
n_in_group = card_soccer.unstack().groupby(level=1).apply(ran_loc,n=2)
# 去掉一个多余的index level
n_in_group.reset_index(level=2,drop=True,inplace=True) 

# 分组时直接不分配group_keys
card_soccer.unstack().groupby(level=1,group_keys=False).apply(ran_loc,n=2)

猜你喜欢

转载自blog.csdn.net/weixin_36420750/article/details/80923607