Pandas DataFrame назначить случайные числа группы - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу случайным образом назначить номера данному фрейму данных, сгруппированному по столбцу 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 голосов
/ 04 сентября 2018

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...