pythonのgroupbyから取得できる値
いつもお世話になっております。
タイポからたまたま正解に辿り着けたのですが、ロジックがわからず、ご指導をお願いします。
■出力データ
# date area resident valueA valueB SD KM
48597 2019-01-26 tokyo man 75000 6.96 1.1 1.1
48598 2019-01-26 tokyo woman 75000 6.96 1.1 1.1
以下のコードの出力をすると、上記のような結果が得られます。この場合、goupbyで取得した値が、b.max()[0]は、dateを日付として取得することがわかるのですが、valueAを取得するための値が、b.mean()[1]ではなく、b.mean()[0]となります。この理由はなんでしょうか?
b.max()[0] ---> date
b.mean()[1] ---> valueA 【不正解】
b.mean()[0] ---> valueA 【正解】
■ソースコード
df = pd.read_csv(f,header=None, usecols=[0,1, 2,10,11,13,14], names=['date','area','resident','valueA','valueB','SD','KM'], dtype={'date':'str','area':'str','resident':'str','valueA':'int','valueB':'float','SD':'float','KM':'float'})
for a,b in df.groupby(['area', 'resident'], as_index=False):
print(b.max()[0]) #date
print(a[0])
print(a[1])
print(b.count()[1]) #count
print(int(b.mean()[0])) #valueA
print(round(b.mean()[1],2)) #valueB
print(round(b.mean()[2],2)) #SD
print(round(b.mean()[3],2)) #KM
■参照csvデータ (以下のようなデータが大量に並ぶ)
2019-01-26,tokyo,man,nameA,areaA,detailA,4,13,199000,15000,214000,16.77,A,1.0,1.0
2019-01-26,tokyo,man,nameA,areaA,detailB,4,13,208000,15000,223000,16.87,B,1.0,1.0