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

# -*- 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值