파이썬을 처음 접했다. SO에서 팬더 : 두 열을 조합하여 그룹화 했습니다. 불행히도, 허용 된 답변은 더 이상 판다 버전
0.23.4
에서 작동하지 않습니다
해당 게시물의 목표는 그룹 변수의 조합을 파악하고 값에 대한 사전을 작성하는 것입니다. 즉,
group_by
그룹화 순서를 무시해야합니다.
허용 된 답변은 다음과 같습니다.
import pandas as pd
from collections import Counter
d = pd.DataFrame([('a','b',1), ('a','c', 2), ('b','a',3), ('b','a',3)],
columns=['x', 'y', 'score'])
d[['x', 'y']] = d[['x', 'y']].apply(sorted, axis=1)
x = d.groupby(['x', 'y']).agg(Counter)
print(x)
여기서
...apply(sorted)
다음 예외가 발생합니다.
팬더 판은 다음과 같습니다.
raise ValueError('Must have equal len keys and value ' ValueError: Must have equal len keys and value when setting with an iterable
다음은 https : /를 읽은 후 시도한 내용입니다. /pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html :
> pd.__version__
Out: '0.23.4'
안타깝게도 오류가 발생합니다 :
와이즈 비즈예상 출력 :
d = pd.DataFrame([('a','b',1), ('a','c', 2), ('b','a',3), ('b','a',3)],
columns=['x', 'y', 'score'])
d=d.sort_values(by=['x','y'],axis=1).reset_index(drop=True)
x = d.groupby(['x', 'y']).agg(Counter)
print(x)
누군가 도와주세요? 참고로,
의 수를 계산하는 방법을 안내 할 수 있다면 좋을 것입니다 와이즈 비즈 기둥. 벡터화 솔루션을 찾고 있습니다.1382, in _get_label_or_level_values raise KeyError(key) KeyError: 'x'
score count
x y
a b {1: 1, 3: 2} 2
c {2: 1} 1
를 사용하고 있습니다
많은 감사합니다.
keys()
- 답변 # 1
- 답변 # 2
사용-
x = d.groupby(['x', 'y'])['score'].agg([Counter, 'size']) print(x) Counter size x y a b {1: 1, 3: 2} 3 c {2: 1} 1
출력
a=d[['x','y']].values a.sort(axis=1) d[['x','y']] = a x = d.groupby(['x', 'y']).agg(Counter) print(x)
- 답변 # 3
score x y a b {1: 1, 3: 2} c {2: 1}
추가result_type = 'broadcast'
에 대한 인수 중 하나로 일했다..apply()
>>> d = pd.DataFrame([('a','b',1), ('a','c', 2), ('b','a',3), ('b','a',3)], columns=['x', 'y', 'score']) >>> d[['x', 'y']] = d[['x', 'y']].apply(sorted, axis=1, result_type='broadcast') >>> x = d.groupby(['x', 'y']).agg(Counter) >>> print(x) score x y a b {1: 1, 3: 2} c {2: 1}
의 유무에 따른 차이점에 유의하십시오 .result_type = 'broadcast'
>>> d[['x', 'y']].apply(sorted, axis=1) 0 [a, b] 1 [a, c] 2 [a, b] 3 [a, b] dtype: object >>> d[['x', 'y']].apply(sorted, axis=1, result_type='broadcast') x y 0 a b 1 a c 2 a b 3 a b
result_type = 'broadcast'
의 결과를 분할 (방송) 목록에서 해당 열로 다시 할당하여.apply()
에 할당 .d[['x', 'y']]
관련 자료
- python - 열 내부 인덱스를 기반으로 그룹 팬더 데이터 프레임
- python - pandas groupby - 숫자 대신 그룹 이름
- python - 4 열의 Excel 데이터를 Pandas에서 2 행으로 가져 오는 방법
- python - Pandas Dataframe은 값이 참인 한 그들을 그룹화합니다
- Pandas DataFrame의 각 그룹에 kmeans를 적용하고 동일한 DataFrame의 새 열에 클러스터를 저장합니다
- python - Pandas에서 월별로 날짜 그룹화
- python - Pandas는 여러 조건에 따라 여러 열을 변경합니다
- python - pandas - is_monotonic_increasing을 사용하여 여러 열을 반복합니다
- Pandas - 판다 - 많은 집계 함수를 기반으로 많은 새 열 추가
- python - 열의 값을 사용하여 Pandas 그룹화
- 외부 기준에 따라 Pandas 데이터 프레임에 열 추가
- python - 길이가 다른 팬더의 두 열을 병합하는 방법
- python - pandas 데이터 프레임 - 동일한 문자열로 시작하는 행에 대한 백분율이있는 열 추가
- python - Pandas의 열에서 다음 번호 선택
- python - 두 개의 팬더 열을 첫 번째 열의 첫 번째 요소, 두 번째 열의 두 번째 요소 등을 사용하여 하나의 데이터 프레임으로 혼합하는 방법은 무엇입니까?
- python - 열을 세로로 분할하는 Pandas
- python - Pandas df는 두 열의 실제 합의 두 배를 반환합니다
- python - 열 이름에 공백 팬더가있는 경우 여러 열 삭제
- python - Pandas df에서 그룹당 이동 평균 계산
- python - 목록 사전에서 팬더 열 이름을 설정하는 방법은 무엇입니까?
- python : EC2의 Pandas MemoryError
- Python /Pandas : 부울 값이있는 새 시리즈 /컬럼을 구성하는 임계 값이있는 누적 판매 데이터가 있습니까?
- python : 팬더가있는 가변 크기의 덩어리로 큰 텍스트 파일 읽기
- python : SKLEARN : 각 대상 클래스에서 몇 가지 기록 만 취하십시오.
- python : 추가 문자 또는 열에서 값을 제거하십시오
- python : 팬더가있는 열에서 중복 값을 제거하는 방법
- python : 파이썬 3 | 데이터 프레임이 동적으로 생성되면 이름으로 데이터 프레임을 인쇄하는 방법은 무엇입니까?
- python : 두 개의 데이터 프레임을 비교하고 파이썬의 각 데이터 프레임에서 누락 된 것을 찾는 방법
- python : 파이썬의 얼룩 (리 필터)
- python : "0 일 00:39:00"을 팬더에서 39로 변환하는 방법은 무엇입니까?
문제는
sorted
입니다 리턴 목록이므로 ti를Series
로 변환해야합니다. :하지만
numpy.sort
를 사용하는 것이 더 빠릅니다DataFrame
와 함께apply
때문에 생성자 후드 아래에 루프가 있습니다 :그런 다음 집계 함수 목록이 포함 된 집계에 대해서는 seelct 열이 표시됩니다 (예 : 와이즈 비즈 고유 한 값의 개수 :
또는
x = d.groupby(['x', 'y'])['score'].agg([Counter, 'nunique']) print(x) Counter nunique x y a b {1: 1, 3: 2} 2 c {2: 1} 1
의 수 :