Pandas 열의 그룹화 된 조합 수

gmfredit

아래와 같이 한 사람당 두 개의 값이있는 데이터 세트가 있으며 모든 조합과 조합 수를 생성하고 싶습니다. 작동하는 솔루션이 있지만 하드 코딩되고 확장 가능하지 않습니다. 솔루션을 개선하는 방법에 대한 아이디어를 찾고 있습니다.

예:

d = {'person': [1,1,2,2,3,3,4,4,5,5,6,6], 'type': ['a','b','a','c','c','b','d','a','b','c','b','d']}
df = pd.DataFrame(data=d)
df

    person type
0        1    a
1        1    b
2        2    a
3        2    c
4        3    c
5        3    b
6        4    d
7        4    a
8        5    b
9        5    c
10       6    b
11       6    d

내 비효율적 인 솔루션 :

df = pd.get_dummies(df)
typecols = [col for col in df.columns if 'type' in col]
df = df.groupby(['person'], as_index=False)[typecols].apply(lambda x: x.astype(int).sum())

df["a_b"] = df["type_a"] + df["type_b"]
df["a_c"] = df["type_a"] + df["type_c"]
df["a_d"] = df["type_a"] + df["type_d"]
df["b_c"] = df["type_b"] + df["type_c"]
df["b_d"] = df["type_b"] + df["type_d"]
df["c_d"] = df["type_c"] + df["type_d"]

df["a_b"] = df.apply(lambda x: 1 if x["a_b"] == 2 else 0, axis=1)
df["a_c"] = df.apply(lambda x: 1 if x["a_c"] == 2 else 0, axis=1)
df["a_d"] = df.apply(lambda x: 1 if x["a_d"] == 2 else 0, axis=1)
df["b_c"] = df.apply(lambda x: 1 if x["b_c"] == 2 else 0, axis=1)
df["b_d"] = df.apply(lambda x: 1 if x["b_d"] == 2 else 0, axis=1)
df["c_d"] = df.apply(lambda x: 1 if x["c_d"] == 2 else 0, axis=1)

df_sums = df[['a_b','a_c','a_d','b_c','b_d','c_d']].sum()
print(df_sums.to_markdown(tablefmt="grid"))

 +-----+-----+
|     |   0 |
+=====+=====+
| a_b |   1 |
+-----+-----+
| a_c |   1 |
+-----+-----+
| a_d |   1 |
+-----+-----+
| b_c |   2 |
+-----+-----+
| b_d |   1 |
+-----+-----+
| c_d |   0 |
+-----+-----+

이 솔루션은 모든 사람이 6 개의 고유 값 목록에서 정확히 2 개의 고유 값을 가지지 만 NULLS가 있거나 6 개 이상의 고유 값이 있으면 빠르게 관리 할 수 ​​없게되기 때문에 작동합니다.

Ansev

우리는 할 수 있습니다 :

s = df.sort_values('type').groupby('person', sort=False)['type']\
    .agg(tuple).value_counts()
s.index = [f'{x}_{y}' for x, y in s.index]
s = s.sort_index()
print(s)

a_b    1
a_c    1
a_d    1
b_c    2
b_d    1
Name: type, dtype: int64

모든 조합을 얻는 것도 간단합니다.

from itertools import combinations
s = df.sort_values('type').groupby('person', sort=False)['type']\
      .agg(tuple).value_counts()\
      .reindex(list(combinations(df['type'].unique(), 2)), fill_value=0)


(a, b)    1
(a, c)    1
(a, d)    1
(b, c)    2
(b, d)    1
(c, d)    0
Name: type, dtype: int64

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Pandas에서 그룹화 된 문자열의 누적 합계

분류에서Dev

pandas- 그룹화 된 열의 백분위 수 (사 분위수) 계산

분류에서Dev

Pandas 그룹화-다른 열을 기준으로 그룹화 된 합계의 백분율로 값

분류에서Dev

Pandas에서 그룹화 된 데이터의 단일 열에 함수 적용

분류에서Dev

그룹화 된 열 합산

분류에서Dev

Pandas에서 한 수준의 그룹화 된 데이터 집계

분류에서Dev

다른 열의 그룹화 된 값의 합계로 Pandas 데이터 프레임의 열 정규화

분류에서Dev

R에서 길이 조합이 다른 df의 다른 열로 그룹화 할 때 열에 생성 된 모든 조합의 개수를 구합니다.

분류에서Dev

Python pandas : 그룹화 된 값 x의 처음 n 개 행 합계

분류에서Dev

dplyr-그룹화 된 변수를 그룹화 된 변수의 하위 집합과 비교

분류에서Dev

열 합계를 기반으로하고 Pandas의 다른 열 2 개로 그룹화 된 새 열 추가

분류에서Dev

한 열에서 조건이 충족되지만 다른 열로 그룹화 된 Pandas 데이터 프레임의 열 합계

분류에서Dev

Pandas : 다른 열로 그룹화 된 열의 평균 계산

분류에서Dev

조인 된 테이블의 그룹화 및 합계 합계

분류에서Dev

여러 열에 그룹화 된 함수

분류에서Dev

그룹화 된 수천 숫자 형식화-txt의 배열

분류에서Dev

R의 요인으로 그룹화 된 변수의 모든 조합으로 나누기

분류에서Dev

열 값의 고유 한 행으로 그룹화 된 Pandas 계산

분류에서Dev

Pandas의 여러 열에 대한 그룹화 된 집계

분류에서Dev

Python Pandas의 그룹화 된 개체에 새 열 추가

분류에서Dev

그룹화 된 열의 수를 열로 구하려면 어떻게해야합니까?

분류에서Dev

Pandas 데이터 프레임의 모든 그룹화 된 행에 합계 추가

분류에서Dev

그룹화 된 데이터 프레임의 열에있는 항목 쌍의 수를 계산합니다. (팬더)

분류에서Dev

MySQL, 그룹화 된 항목의 조건부 개수에 따른 값 선택

분류에서Dev

여러 조건에서 그룹화 된 변수의 모든 행에 값 할당

분류에서Dev

열의 값에 따라 다른 함수를 사용하여 조건부로 그룹화 된 데이터 프레임을 집계합니다.

분류에서Dev

열로 그룹화 된 data.table의 함수 적용

분류에서Dev

R의 그룹화 된 누적 합계

분류에서Dev

그룹화 된 막대 차트에서 Pandas DataFrame의 다양한 항목 수의 평균을 플로팅합니다.

Related 관련 기사

  1. 1

    Pandas에서 그룹화 된 문자열의 누적 합계

  2. 2

    pandas- 그룹화 된 열의 백분위 수 (사 분위수) 계산

  3. 3

    Pandas 그룹화-다른 열을 기준으로 그룹화 된 합계의 백분율로 값

  4. 4

    Pandas에서 그룹화 된 데이터의 단일 열에 함수 적용

  5. 5

    그룹화 된 열 합산

  6. 6

    Pandas에서 한 수준의 그룹화 된 데이터 집계

  7. 7

    다른 열의 그룹화 된 값의 합계로 Pandas 데이터 프레임의 열 정규화

  8. 8

    R에서 길이 조합이 다른 df의 다른 열로 그룹화 할 때 열에 생성 된 모든 조합의 개수를 구합니다.

  9. 9

    Python pandas : 그룹화 된 값 x의 처음 n 개 행 합계

  10. 10

    dplyr-그룹화 된 변수를 그룹화 된 변수의 하위 집합과 비교

  11. 11

    열 합계를 기반으로하고 Pandas의 다른 열 2 개로 그룹화 된 새 열 추가

  12. 12

    한 열에서 조건이 충족되지만 다른 열로 그룹화 된 Pandas 데이터 프레임의 열 합계

  13. 13

    Pandas : 다른 열로 그룹화 된 열의 평균 계산

  14. 14

    조인 된 테이블의 그룹화 및 합계 합계

  15. 15

    여러 열에 그룹화 된 함수

  16. 16

    그룹화 된 수천 숫자 형식화-txt의 배열

  17. 17

    R의 요인으로 그룹화 된 변수의 모든 조합으로 나누기

  18. 18

    열 값의 고유 한 행으로 그룹화 된 Pandas 계산

  19. 19

    Pandas의 여러 열에 대한 그룹화 된 집계

  20. 20

    Python Pandas의 그룹화 된 개체에 새 열 추가

  21. 21

    그룹화 된 열의 수를 열로 구하려면 어떻게해야합니까?

  22. 22

    Pandas 데이터 프레임의 모든 그룹화 된 행에 합계 추가

  23. 23

    그룹화 된 데이터 프레임의 열에있는 항목 쌍의 수를 계산합니다. (팬더)

  24. 24

    MySQL, 그룹화 된 항목의 조건부 개수에 따른 값 선택

  25. 25

    여러 조건에서 그룹화 된 변수의 모든 행에 값 할당

  26. 26

    열의 값에 따라 다른 함수를 사용하여 조건부로 그룹화 된 데이터 프레임을 집계합니다.

  27. 27

    열로 그룹화 된 data.table의 함수 적용

  28. 28

    R의 그룹화 된 누적 합계

  29. 29

    그룹화 된 막대 차트에서 Pandas DataFrame의 다양한 항목 수의 평균을 플로팅합니다.

뜨겁다태그

보관