2017-01-15 7 views
1
import pandas as pd 
census_df = pd.read_csv('census.csv') 
#census_df.head() 

def answer_seven(): 

    census_df_1 = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME') 
    census_df_1['highest'] = census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].max() 
    census_df_1['lowest'] =census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].min() 
    x = abs(census_df_1['highest'] - census_df_1['lowest']).tolist() 
    return x[0] 
answer_seven() 

これは、2010年から2015年(POPESTIMATES)内の人口の最大の絶対変化を持っているの郡を見つけるために、census.csvからのデータを使用しようとしているが、私は単純に探していました各年/列の最大値と最小値のabs.valueの差。文字列を返す必要があります。また、私は間違ったデータ構造をインデックスアム?[(census_df['SUMLEV'] ==50)]は、彼らが50に設定されているとしてのみ郡が取られることを意味しかし、コードが:pythonのパンダ

KeyError: "['POPESTIAMTE2010' 'POPESTIAMTE2011' 'POPESTIAMTE2012' 'POPESTIAMTE2013'\n 'POPESTIAMTE2014' 'POPESTIAMTE2015'] not in index"

で終わるエラーになりますか私はdatascienceとコーディングに本当に新しいです。

+1

この見えsupicious '「POPESTIAMTE2013」\あなたには、いくつかの理由で列名のリストに組み込まれた新しい行を持っているN '、'プリント(census_df.columnsからの出力を投稿してください。 tolist()) '列のリストが有効であることを確認する – EdChum

+0

@EdChumありがとう、私は徐々にこのサイトの使い方を学んでいます。私は新しい(クレジットなし)ので、データフレームの写真を挿入することはできません。私はちょうど戻って、メモ帳のスペースを削除しました+私は関数を保存して、再度実行しました。エラーは 'POPEXTIMATE2013'の '\ n'文字をこの時間表示します。私はかなり実装していないと確信しています(私がそれを書いた方法)。ありがとう。 –

+0

私はそれは同じエラーです、ちょうど慎重に見ていない。質問を無視してください。 –

答えて

2

コード内の列名に誤字があると思います。パターンは 'POPESTIMATE201?'です「POPESTIAMTE201」ではなく

コードを短縮するのに役立ちます。ここで動作するコードがある -

census_df = pd.read_csv('census.csv') 
def answer_seven(): 
    cdf = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME') 
    columns = ['POPESTIMATE2010', 'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013', 'POPESTIMATE2014', 'POPESTIMATE2015'] 
    cdf['big'] = cdf[columns].max(axis =1) 
    cdf['sml'] = cdf[columns].min(axis =1) 
    cdf['change'] = cdf[['big']].sub(cdf['sml'], axis=0) 
return cdf['change'].idxmax()