2017-02-10 33 views
1

次のような簡単な方法があります。私は、日付(日)、会社、販売の列を持つパンダデータフレームを持っています。私は各企業の売上を列としてデータフレームを作成したいと思います。つまり、新しい列は、日付、会社1の販売、会社2の販売、会社3の販売である必要があります。私は会社の列の名前で列に名前を付けたいと思います。パンダのデータフレームgroupbyとカラムへの結合

私は:df.groupby(['company'])と私はグループ内の各要素の外部結合ができると思った。しかし、これは反抗的に思われる?これを行う簡単な方法があるようですね?ありがとうございました!どんな助けでも大歓迎です。

date | company | sales 

1/1/2017 | AAA | 100 

1/1/2017 | BBB | 200 

1/1/2017 | CCC | 300 

そして、私はそれを変換したい:

例がある

date | AAA | BBB | CCC 

1/1/2017 | 100 | 200 | 300 
+0

あなたの実際のコードを投稿してください。しかし、 'df.pivot_table(index = 'date'、columns = 'company'、values = 'sales'、aggfunc = 'sum')'のように 'pivot_table'を使ってこのタスクを実行できるように思えます。 – cmaher

答えて

1

オプション1
​​unstack

df.set_index(['date', 'company']).sales.unstack().reset_index() 

company  date AAA BBB CCC 
0  1/1/2017 100 200 300 

オプション2
pivot

df.pivot('date', 'company', 'sales').reset_index() 

company  date AAA BBB CCC 
0  1/1/2017 100 200 300 
+0

ありがとうございます。私はピボットの結果から会社の列を削除しようとしました(私はそれを必要としないので)。私は 'drop( 'company'、axis = 1)でそれをするようには思えませんでした。どのように私は会社の列を取り除くのですか? –

+0

@StanfordWong 0がインデックスです。 Companyは列オブジェクトの名前です。あなたはインデックスを取り除くことはできません。しかし、あなたは列の名前を取り除くことができます。いずれかのソリューションに以下を追加してください:.rename_axis([None]、1) – piRSquared

+0

最後に 'reset_index()'をなぜ追加しますか?それがなければ正常に動作するようですか? –

関連する問題