大熊猫数据框分配随机数分组依据

时间:2018-09-04 15:20:29

标签: python pandas

我想将数字随机分配给由col1分组的给定数据框,因此:

col1   col2 
MLB    1
MLB    1 
NBA    2
NFL    3
NFL    3
NFL    3

但是,我的脚本将遍历多个数据帧,并且我不希望MLB始终与1关联,因此下一次它将输出类似这样的内容。

col1   col2 
MLB    3
MLB    3 
NBA    1
NFL    2
NFL    2
NFL    2

我的最终输出就是col2,因为我不想透露col1,但我想保留col2关联的行。

1 个答案:

答案 0 :(得分:1)

您可以使用np.random.permutation

import pandas as pd
import numpy as np

df = pd.DataFrame([['MLB', 'MLB', 'NBA', 'NFL', 'NFL', 'NFL'],
                   [1, 1, 2, 3, 3, 3]], index=['col1', 'col2']).T

# get all categories
cat = df['col1'].unique()
# shuffle them in random order
random_order = np.random.permutation(cat)

# define a mapping based on the random shuffle
map_dict = dict(zip(random_order, range(1, len(cat)+1)))

# change col2
out = df['col1'].replace(map_dict)