2017-06-19 12 views
1

を転置しながら、私は2つの列からのデータを他の日と同様の質問を:グループ化列

Grouping columns by unique values in Python

を今、私は3つの列を持っています。それらは、列Aと列Bをヘッダー値としてグループ化し、列Cを適切にソートする必要があります。

マイデータフレームは次のようになります。

A B C 
25115 20 45 
25115 30 154 
25115 40 87 
25115 70 21 
25115 90 74 
26200 10 48 
26200 20 414 
26200 40 21 
26200 50 288 
26200 80 174 
26200 90 54 

しかし、私はこれで終わる必要があります。

 10 20 30 40 50 70 80 90 
25115  45 154 87  21  74 
26200 48 414  21 288  174 54 

これは、列Cの値を取得しますが、いない列Bと行名など。

import pandas as pd 
df = pd.DataFrame({'A':[25115,25115,25115,25115,25115,26200,26200,26200,26200,26200,26200],'B':[20,30,40,70,90,10,20,40,50,80,90],'C':[45,154,87,21,74,48,414,21,288,174,54]}) 
a = df.groupby('A')['C'].apply(lambda x:' '.join(x.astype(str))) 

いずれのアイデアも高く評価されます。

+0

ので、物事のカップル、あなたがしたすべては誰も変更せずに、2つのカラムの前の例で提供したコードをコピーしていたように思えます第二に、多くの人々があなたにそのスレッドで良い答えを与えてくれました。あなたはそれらの答えのいくつかを使っているようですが、正しいものとして答えを受け入れなかったようです。 –

答えて

1
  • オプション1:

使用pivot_table:

df.pivot_table(values='C',index='A',columns='B') 

出力

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
  • オプション2:

使用set_index /アンスタック:

df.set_index(['A','B'])['C'].unstack() 

出力:

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
+0

素晴らしい感謝! –

関連する問題