Python 熊猫数据帧按组分配随机数

Python 熊猫数据帧按组分配随机数,python,pandas,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关联的行。您

我想将数字随机分配给按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关联的行。

您可以使用:

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)