2017-03-20 7 views
0

が、私はいくつかのためにデータフレームはなぜ

df_filtered = census_df.copy().filter(items=['SUMLEV','STNAME','CTYNAME']) 
df_filtered = df_filtered.set_index(['STNAME']) 
state_df['STNAME'] = df.index.tolist() 
state_df['STNAME'] = state_df['STNAME'].drop_duplicates() 
state_df = state_df['STNAME'].dropna() 
state_df = pd.DataFrame(state_df) 
state_df.set_index(['STNAME']) 

for state in state_df: 
    state_df['COUNT'] = df.loc[state].count() 

を持ってPANDAS を使用して(「STNAME」)状態にある都市の最大数(「CTYNAME」)を取得しようとしていますパンダPythonでKeyError例外を取得しています私が州名( 'STNAME')にインデックスを設定したとしても、インデックスは州(アラスカ、ユタなど)の代わりに整数の束です。

そして、私はあなたが実際にヘッダを反復処理しているんfor _ in dfとき、それは

KeyError: 'the label [STNAME] is not in the [index]' 

答えて

0

私の主なエラーを与えているコードを実行してみてください。 は、行を反復処理するためにstate_df.iterrows()を使用し、それ以外のシリーズstate_df['STNAME']

for state in state_df['STNAME']: 
    # do stuff here with state 

を反復処理してください。 「STNAME」があなたのインデックスである場合、これを行うことができます:

for row in state_df.iterrows(): 
    state_name = row[0] 
    # do stuff here with state name 
+0

私はiterrowsを使用して反復処理するにはどうすればよいですか?私は次の(state_df.iterrows())[1]を使って試してみましたが、何らかの理由で同じレコード "Alabama"を与え続けています。 –

+0

私はprint(state_df)を実行すると、左側に整数のリストが表示され、右側にSTNAME(状態名)が表示されます。私はちょうど国家名を反復する方法を理解することができません... また、私はしていた(〜(次の(state_df.iterrows())[1] .empty())):しかし、それはtypeError "Bool"オブジェクトが呼び出せません –

+0

私は自分の答えを更新しました。私の最初の例が示すように、 'STNAME'列を反復してみてください。 @ Linkx_lair – Lgiro

0

インデックスが設定されていません。これを試して。

編集コード:

df_filtered = df_filtered.set_index('STNAME') 
+0

これを試して。これが役立つことを願っています。 – Dheeraj

+0

私はそれを試みましたが、index.tolist()を使用してインデックスのリストを印刷しようとすると、代わりに整数のリストが表示されます。私は何が起こっているのかわからなくて、インデックスを州名( 'STNAME')にすることができないのです –