2017-08-07 18 views
1

に指標として設定し、私はこのようになりますデータフレームdf1あります列の値によってグループとパンダ

df1 = pd.DataFrame({'A':[0,5,4,8,9,0,7,6], 
        'B':['a','s','d','f','g','h','j','k'], 
        'C':['XX','XX','XX','YY','YY','WW','ZZ','ZZ']})  

を行が持つように、私の目標は、列Cに含まれる値に応じてグループに要素であります同じ値で、同じインデックスを持ちます(これには、Cに格納されている値が含まれている必要があります)。したがって、出力は次のようにする必要があります:

A B 
XX 0 a 
    5 s 
    4 d 
YY 8 f 
    9 g 
WW 0 h 
ZZ 7 j 
    6 k 

私はコマンドdf.groupby('C')を使用しようとしましたが、それは次のオブジェクトを返します。

<pandas.core.groupby.DataFrameGroupBy object at 0x000000001A9D4860> 

は、あなたは私の私の目標を達成するために、エレガントでスマートな方法を提案することはできますか?

注:私は私の質問は、何らかの形でマルチインデックス

+0

あなたは 'df1.set_index( 'C')を'意味ですか? – Zero

+0

それは似ていますが、私のやりたいことが異なっている間に各要素に割り当ててインデックスを付けるので、私の問題には適合しません...私はデータフレームの内容にアクセスするためのインデックスを持っていたいと思います –

答えて

2

に関連していると思うことが必要MultiIndex場合は、列CAからDataFrame.set_index

df2 = df1.set_index('C') 
print (df2) 
    A B 
C  
XX 0 a 
XX 5 s 
XX 4 d 
YY 8 f 
YY 9 g 
WW 0 h 
ZZ 7 j 
ZZ 6 k 

print (df2.loc['XX']) 
    A B 
C  
XX 0 a 
XX 5 s 
XX 4 d 

を必要とするようだ:

df3 = df1.set_index(['C', 'A']) 
print (df3) 
     B 
C A 
XX 0 a 
    5 s 
    4 d 
YY 8 f 
    9 g 
WW 0 h 
ZZ 7 j 
    6 k 

print (df3.loc['XX']) 
    B 
A 
0 a 
5 s 
4 d 
1

Iあなたがpivot_table、つまり

を探していると思います
pd.pivot_table(df1, values='A', index=['C','B']) 

出力:

 
     A 
C B 
WW h 0 
XX a 0 
    d 4 
    s 5 
YY f 8 
    g 9 
ZZ j 7 
    k 6 
関連する問題