팬더 초보자 질문 :
수백만 개의 행이있는 데이터 프레임이 있으며 샘플 출력은 다음과 같습니다.
c_id c1 c2
0 10 100
0 15 110
0 15 112
2 96 120
56 43 42
각 customer_id에 대해 몇 가지 작업을 수행하는 테이블을 만들고 싶습니다. 가장 좋은 방법은 무엇입니까? 데이터 프레임을 c_id로 정렬 한 다음 인덱스를 설정했습니다.
df = df.sort('c_id', ascending=False)
df = df.set_index('c_id')
그러나 다음과 같은 간단한 작업 :
temp_df = df.loc[:0]
이 문제에 접근하는 가장 빠른 방법은 무엇입니까? 나는 정렬 된 set_index가 트릭을 할 것이라고 생각했습니다. 아닐 것 같아요.
EDIT1 :
c_id의 각 값에 대해 c1의 모든 고유 값 목록을 가져오고 싶습니다. 그래서 다음과 같습니다.
df.loc[:0].c1.unique()
명시 적으로 그룹을 만들지 말고 pandas groupby를 사용 하세요.
예를 들어 클라이언트의 평균 값을 찾으려고하면 다음을 수행 할 수 있습니다.
df.groupby(by = df['c_id']).mean()
등등.
.apply
및 .transform
메서드를 사용하여 (거의) 임의의 변환을 적용 할 수도 있습니다 ( 평균, 표준, 최소, 최대와 같은 내장 메서드가 최적화 되었기 때문에 훨씬 더 효율적이지만).
특정 질문에 대답하려면 다음을 수행하십시오.
df.groupby('c_id').c1.nunique()
다음을 제공합니다.
c_id
0 2
20 1
56 1
Name: c1, dtype: int64
몇 가지 질문 ( this 및 this )은 .nunique가 더 빠른 방법이 아니며 이것이 다른 방법이라는 것을 암시합니다.
df.groupby('c_id').c1.apply(lambda x: len(x.unique()))
(저는 벤치마킹을하지 않았습니다 ...)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다