2017-08-14 5 views
2

は、同一の(recent_gradsall_ages)ラベル付けされている2つのデータフレームがあります。Pandasのiloc関数の使用例は何ですか?次のコードで

majors = recent_grads['Major'].unique() 
rg_lower_count = 0 
for m in majors: 
    recent_grads_row = recent_grads[recent_grads['Major'] == m] 
    all_ages_row = all_ages[all_ages['Major'] == m] 

    rg_unemp_rate = recent_grads_row.iloc[0]['Unemployment_rate'] 
    aa_unemp_rate = all_ages_row.iloc[0]['Unemployment_rate'] 

    if rg_unemp_rate < aa_unemp_rate: 
     rg_lower_count += 1 

print(rg_lower_count) 

は、なぜ私が(ライン7および8に)iloc[0]部分が必要なのでしょうか?各シリーズには1行しかないので(最近のgrads行とすべての年齢の行)、比較を実行する行を指定する必要はありません。 はまだ、それなしに私は、このエラーメッセージが表示されます:ilocを使用して

ValueError: Can only compare identically-labeled Series objects 
+0

...あなたは小さな再現性のあるデータ・セットと、ご希望のデータセットを投稿することができます。 (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)[良い再現性のパンダの例を作成する方法]読んで、あなたに対応して編集してください。 – MaxU

答えて

0

は、常にデータフレームに関係なく、インデックス値で最初の行を取得することを意味します。ここで列名の1つを取得するので、各データフレームの単一のスカラー値になります。ただし、2つのデータフレーム(またはこの列で取得した2つの系列)を比較すると、両方がまったく同じインデックスラベルを持つ場合にのみ比較が可能です。

recent_grads_row.index[0]all_ages_row.index[0]を印刷すると、別の値が表示されるはずです。別のオプションは、両方のデータフレームまたはそのような何かにユーザーreset_indexになるが、ちょうど最初の行を選ぶことは、ここで単純に思えるでしょう。私はより良い__vectorized__アプローチがあると思い

関連する問題