2016-07-18 7 views
2

クイックQ:複数年にわたる各日の平均

データセットを持っています:これは数年間の1日の測定です。 すべての同じ日付の平均を計算しようとしています。すなわちなど1995年1月1日と1996年1月1日と1997年1月1日

の平均を試み、この:

z=df.groupby(df.index.day,df.index.month).mean() 

しかし取得:

TypeError: unhashable type: 'numpy.ndarray' 

乾杯

あなたはリストを渡す必要が
+0

データはどのように保存されていますか? – depperm

答えて

3

IIUC:

z=df.groupby([df.index.day,df.index.month]).mean() 

あなたが何をしたのは複数の引数を渡して、月配列をのargとして解釈するためです。docs

+0

Thats great これをチェックするだけで(これは、1990年から2000年と2000年から2010年までの数年間を分割したものです)、同じ順序でそれらを保持します。 ラベルは、(1,1)、(2,20)、(4,11)、(5,31)、(7,20)、(9,8)、(10,28)、( 12,17) – SLE

+0

df順序を保持したい場合を除いて、渡したargのリストで順序付けします。その場合は 'sort = False'を渡します。 – EdChum

+0

注:構文を逆にするとより直感的な結果が得られます。最初のインデックスは月、2番目は日です。 'dat.groupby([dat.index.month、dat.index.day])。mean()'。それ以外の場合は、何が起こっているのかを知る前に、あなたの月にわずか12日間しかないことについて頭を傷つけるかもしれません。 – EHB

1

Hey @EdChumコメントの表示にコメントを表示するだけで何も表示されません私は意味した。私は日付形式が優れた構文であることに同意します!私は逆の順序でそれを行う際に最初のインデックスは月であり、第二は一日である場合はしかし、私は

WindSpeed 

1 1 1 9.283333 
1 2 6.694444 
1 3 7.861111 
1 4 9.223529 
... 
1 31 8.964706 
2 1 9.127778 
2 2 8.733333 
2 3 7.511111 
... 

を取得します。私はあなたが示唆した順序で行うと は、私が取得:

WindSpeed 
1 1 9.283333 
1 2 8.361111 
1 3 6.670588 
1 4 7.155556 
1 5 8.450000 
1 6 4.777778 
1 7 3.666667 
1 8 4.011765 
1 9 5.210526 
1 10 6.972222 
1 11 7.647059 
1 12 6.844444 
... 

最初のインデックスは、(1-31)から日があり、第二は、(1-12から)の月です。私たちは通常、1月1日から1月2日までの順番でデータを見ます。あなたの場合は、1月から2月が最初に続きます。それは少し私を混乱させた!とにかに、私のニーズに合って私の仕事は良くなった。あなたの答えはたくさんありがとう!私の問題を助けました。

関連する問題