2017-11-03 3 views
0

グループ化した後にデータフレームのstdを計算します。dataframe.groupby(レベル).agg内のパラメータを渡します。

df2 = df.groupby(level='Index').agg(np.std).dropna(how='all') 

罰金すべてが、私はddof=1私は私が行うための操作を渡す関数内でこれを実行したいと思い

np.stdにパラメータを渡す方法がわからない...

operation = ['mean','std'] 
for i in range(0,len(operation)): 
    df2 = df.groupby(level='Index').agg(operation[i]).dropna(how='all') 
    .... 

'mean''std'np.meannp.stdと置き換えることは可能ですか?ddof = 1?

答えて

1

UPDATE:

In [298]: df 
Out[298]: 
    val 
idx 
0  0 
2  2 
4  0 
1  2 
3  0 
0  2 
0  0 
0  0 
3  4 
2  2 

In [299]: def std(x): 
    ...:  return np.std(x, ddof=1) 
    ...: 

In [300]: df.groupby(level=0)['val'].agg(['mean', std]).dropna(how='all') 
Out[300]: 
    mean  std 
idx 
0  0.5 1.000000 
1  2.0  NaN 
2  2.0 0.000000 
3  2.0 2.828427 
4  0.0  NaN 

これを試してみてください:

df2 = df.groupby(level='Index').std(ddof=1).dropna(how='all') 

または

df2 = df.groupby(level='Index').agg(lambda x: np.std(x, ddof=1)).dropna(how='all') 

または単に

df2 = df.groupby(level='Index').agg(np.std, ddof=1).dropna(how='all') 
+0

こんにちは!これは私の質問に答えるが、実際はもう少し複雑だった。私が前に指定しなかった場合は申し訳ありません...あなたの質問を編集しました。 – gabboshow

+0

@ gabboshow、私は更新された質問を理解していません - あなたはそれぞれの反復で 'df2'を上書きしています - サンプルデータセットと希望のデータセットを提供する方が良い/簡単でしょう – MaxU

+0

はい、あなたは正しいですが、それは単なる例です...後で私はdf2で他の操作を行います – gabboshow

関連する問題