2017-10-27 6 views
0

パンダ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 

中間ステップ(以下のリクエストを参照)として、ピボットを変換してvalue> 0の場合はティッカー、else(空白)にする必要があると仮定しています。すなわち:以下、私が試した中間のステップのために

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="") 

助けてもらえますか?事前に助けてくれてありがとう!

+0

を私たちは、代わりにGROUPBYを使用することができます: 'DF1 = pd.DataFrame 'df1 ['説明'] ="クライアントが保持している: "+ df1 ['ticker']' – skrubber

+0

ありがとう、ありがとう、ありがとうあなたの答えのために、しかし、これは全く正しく動作しませんでした。ティッカーフィールドはすべての個々のテロップを文字列に連結しますが、それぞれの間にスペース(スペース)がありません。 – user8834780

+0

このルートを試してください: 'df1 = pd.DataFrame(df.groupby( 'contactId')['ticker' df1 ['説明'] = "クライアントが保持している:" + df1 ['ticker'] ' 'df1.drop_duplicates()' – skrubber

答えて

0

重複を削除するには、以下を追加した後、@sharatpcさんの提案に触発さ:

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

は、これが私の仕事:

df = df.set_index('contactId').groupby('contactId')['ticker'].transform(lambda x: ' '.join(x)).reset_index() 
関連する問題