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