2016-08-17 5 views
0

は、以下のコードを実行は、なぜ私はKeyError例外を取得しました: 'レベルが***見つからない'

def afun(group): 
    aa=len(group) 
    group.sort_values(inplace=True) 

    return pd.DataFrame({'score':np.arange(aa),'price':group}) 



df = pd.DataFrame({ 
       'stock':np.repeat(['AAPL','GOOG','YHOO'], 3), 
       'date':np.tile(pd.date_range('5/5/2015', periods=3, freq='D'), 3), 
       'price':(np.random.randn(9).cumsum() + 10) , 
       'price2':(np.random.randn(9).cumsum() + 10)}) 
df = df.set_index(['stock','date']) 
agroupDf=df.groupby(level='date') 



tt=agroupDf['price'].apply(afun) 

私は私がしたいデータフレーム 'TT'

enter image description here enter image description here

を得ましたしかし、インデックスレベルの日付を落とすtt.reset_index(level='date', drop=True,inplace=True)私を与えるKeyError: 'Level date not found'

私はcoufused、どのように元気?

tt.reset_index(level='date', drop=True,inplace=True) 
Traceback (most recent call last): 

    File "<ipython-input-4-493c886f0c00>", line 1, in <module> 
    tt.reset_index(level='date', drop=True,inplace=True) 

    File "D:\common\Anaconda3.4\lib\site-packages\pandas\core\frame.py", line 2920, in reset_index 
    level = [self.index._get_level_number(lev) for lev in level] 

    File "D:\common\Anaconda3.4\lib\site-packages\pandas\core\frame.py", line 2920, in <listcomp> 
    level = [self.index._get_level_number(lev) for lev in level] 

    File "D:\common\Anaconda3.4\lib\site-packages\pandas\indexes\multi.py", line 519, in _get_level_number 
    raise KeyError('Level %s not found' % str(level)) 

KeyError: 'Level date not found' 
+0

インデックス名は '' date''、 ''stock''、' 'date''です。 「tradeDate」はありません。あなたは正確に何を達成したいですか?あなたのコードはとても複雑です。それは2回同じことをしています... – Kartik

+0

@Kartik私は申し訳ありません、 'tradeDate'は間違いです.iは編集します。 – inaMinute

+0

[groupby.applyが重複レベルを返す理由]の複製があります。(http://stackoverflow.com/questions/38948336/why-groupby-apply-return-duplicate-level) – Merlin

答えて

1

を次のようにすべてのエラーメッセージがあるあなたのエラーは、それがValueError: The name date occurs multiple times, use a level numberで、KeyError: 'Level date not found'ではありません。そして、エラーが示すように:

tt.reset_index(level=2, drop=True,inplace=True) 

あなたが望むものを与えます。

+0

はい、あなたは正しいです。どうもありがとう 。 私は長い間この問題に悩まされています。あなたがちょうど – inaMinute

+0

@inaMinuteと言っているエラーの提案を見つける場所を教えてください。あなたに興味のあるpythonの話題を取り上げてください。経験豊富なPython開発者があなたのやっていることは、うんざりして読めなくなります。 – Merlin

+0

@Merlin、私はOPに目標を達成するためのPythonの方法を提供しようとしていました。しかし、私は少し遅れて走っています。あなたが周りにいれば、私の答えを編集するか、OPが探している結果を得るためのより良い方法で新しい答えを投稿することができます。ありがとう! – Kartik

関連する問題