2017-10-27 1 views
0

팬더 DataFrame :피벗 및 CONCAT 값 나는이처럼 보이는 dataframe이

contactId ticker 
0 ABC   XYZ 
1 ABC   ZZZ 
0 BCA   YYY 

과 같이 피벗 만들기 : 다음과 같은 출력

final_df = final_df.pivot_table(index='contactId', columns='ticker', aggfunc=len, fill_value=0) 

결과 :

ticker  XYZ ZZZ YYY 
contactId  
ABC   1  1  0 
BCA   0  0  1 

중간 단계 (아래 요청 참조)로, 값> 0이면 시세 표시기, 그렇지 않으면 (공백)되도록 피벗을 변환해야한다고 가정합니다. 예 : 다음 나는 시도 중간 단계에 대한

contactId ticker description 
ABC   XYZ ZZZ The client is holding: XYZ ZZZ 
BCA   YYY  The client is holding: YYY 

(그러나 그것을 ValueError를 통해 : 내가 찾고 있어요 출력은 공백으로 구분 시세 contactId의 당 + 텍스트 문자열의 목록입니다

ticker  XYZ ZZZ YYY 
contactId  
ABC   XYZ ZZZ  
BCA      YYY 

때문에 : Groerper for 'ticker'for 1-dimensional) :

final_df = final_df.pivot_table(index='contactId', columns='ticker', values='ticker', fill_value="") 

도움을 줄 수 있습니까? 미리 도움을 주셔서 감사합니다!

df = df[pd.notnull(df['contactId'])] 

이 나를 위해 일한 :

+0

을 우리는 GROUPBY 사용할 수 있습니다 대신'DF1 = pd.DataFrame df1 [ 'Description'] = "클라이언트가 보유하고 있습니다 :"+ df1 [ 'ticker']' – skrubber

+0

감사합니다. 감사합니다. 당신 대답에 대한,하지만이 제대로 작동하지 않습니다. 티커 필드는 모든 개별 티커를 문자열로 연결하지만 중요한 각각의 사이에 (공백) 분리가 없습니다 – user8834780

+0

다음 경로를 시도하십시오 :'df1 = pd.DataFrame (df.groupby ('contactId') [ 'ticker' df1 [ 'Description'] = "클라이언트가 보유하고있는 것 :"+ df1 [ 'ticker'] ' 'df1.drop_duplicates()' – skrubber

답변

0

중복 제거하기 위해 아래에 추가 한 후, @sharatpc의 제안에 의해 영감을

df = df.set_index('contactId').groupby('contactId')['ticker'].transform(lambda x: ' '.join(x)).reset_index() 
관련 문제