조건부로 사용자를 그룹에 무작위로 할당해야합니다. 2.Python의 조건부 임의 할당
게다가의 상기 행렬에 상응
A B C
0 9 1 1
1 1 7 8
2 0 2 1
영역 1 내지 영역 0 16 11 사용자 총 거기, 및 영역 3 : 공정을 관리하는 테이블은 다음과 같다 영역 0, 9의 11 명의 사용자는 그룹 A에 할당되어야하고 각각 1은 B와 C에 할당되어야합니다. 프로세스는 나머지 그룹과 유사합니다.
는 파이썬에 몇 가지 코드를 가지고 :
는import random
import pandas as pd
df = pd.DataFrame({"A": [9,1,0], "B": [1,7,2], "C": [1,8,1]})
random.sample(range(1,df.sum(axis=1)[0] + 1),df.sum(axis=1)[0])
마지막 줄은, 예를 들어 정수의 임의의 벡터를 생성 [1, 4, 10, 2, 5, 11, 9, 3, 8, 7, 6]
. 1에서 9까지의 인덱스를 그룹 A에 할당 할 수 있습니다. 그룹 B에 대해 10 인 인덱스, 그룹 C에 대해 11 인 인덱스입니다. 즉, 사용자 3은 그룹 B로 이동하고 사용자 6은 그룹 C로 이동합니다. 원하는 출력 [A,A,B,A,A,C,A,A,A,A,A]
, 또는 더 나은, 같은 팬더 dataframe 될 것이라고 그룹 A.
로 이동 하셔도 :
1 A
2 A
3 B
4 A
5 A
6 C
...
어떻게 내가 위의 단어에 설명 된 프로세스를 자동화 할 수 있습니다? 를 뒤 바꿔 다음
In [38]: [np.repeat(df.columns, row) for row in df.values]
Out[38]:
[Index(['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'C'], dtype='object'),
Index(['A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C', 'C',
'C', 'C'],
dtype='object'),
Index(['B', 'B', 'C'], dtype='object')]
: 그리고 다음
In [39]: [np.random.permutation(np.repeat(df.columns, row)) for row in df.values]
Out[39]:
[array(['C', 'A', 'A', 'A', 'A', 'A', 'B', 'A', 'A', 'A', 'A'], dtype=object),
array(['A', 'B', 'C', 'C', 'B', 'C', 'B', 'C', 'C', 'B', 'B', 'C', 'C',
'C', 'B', 'B'], dtype=object),
array(['B', 'C', 'B'], dtype=object)]
및
고마워요! 이것은 아주 잘 설명되었습니다. – wwl