2017-02-03 2 views
1

에 선택된 열의 값에 가입하는 효율적인 방법 I은 단일 행으로 평평하도록팬더 : 그룹화 dataframe

LAST_MOD_DATE  ID TITLE   TXT_ID    TXT 
0 1486047205463  2 TITLE-2  7     ABC 
1 1486047205463  2 TITLE-2  5     XYZ 
2 1486047205463  2 TITLE-2  6     MNQ 

내가 ID별로 그룹화하여 싶다고 이러한 DF있다. 값이 다른 TXT_IDTXT 인 필드는 쉼표로 구분 된 값으로 하나로 결합됩니다. 난 그냥

df.groupby('ID')['TXT'].apply(lambda x:', '.join(x)) 

하지만 어떻게 단지 동안 선택적으로 일부 열을 가입 할 수 있도록 전체 안양에 그것을 수행하는 방법에 의해 하나의 열을 얻을 수 있어요

ID 
2 1486047205463  TITLE-2  7, 5, 6   ABC, XYZ, MNQ 

: 그래서, 뭔가 아래와 같이 동일한 그룹 내의 다른 열의 맨 위 값을 선택하십시오. 지금은 값을 집합으로 집계 한 다음 일부 열에 대해 집합을 확장하여이 작업을 수행하고 있습니다. 그러나 이것은 매우 효율적으로 보이지 않습니다.

답변

0

agg을 사용하고 각 열에 적용 할 기능을 제공하십시오. 여기서 'TITLE'의 첫 번째 요소를 취하는 방법을 설명하기 위해 'ID'만 다시 그룹화하는 혼합 된 예제를 제공하지만 샘플에 대해 그룹화 할 수 있습니다 (일반적인 경우는 아님) :

df.groupby('ID').agg({'TITLE':'first', 
         'TXT_ID':lambda x:', '.join(x), 
         'TXT':lambda x:', '.join(x)}) 
Out[288]: 
     TITLE TXT_ID   TXT 
ID         
2 TITLE-2 7, 5, 6 ABC, XYZ, MNQ 
+0

아, 알겠습니다. 감사합니다. – Fizi