2016-04-12 9 views
0

私は以下のようにpandas.DataFrame dfを持っています。最初の列は自動生成されたインデックスです。DataFrameのスライスとデフォルトのインデックス

In[221]: df 
Out[220]: 
    name age sex  job 
0 John 15 M Student 
1 Mike 30 M  Labor 
2 Lily 41 F Student 
3 Dave 66 M  Labor 
4 Sam 23 F Scientist 
5 Luke 7 M  Labor 
6 Ellen 80 F  Labor 
7 Jacob 52 M  Actor 

これをスライスした後、デフォルトのインデックスが継承されます。

In[225]: df_labor = df[df.job == 'Labor'] 
In[226]: df_labor 
Out[225]: 
    name age sex job 
1 Mike 30 M Labor 
3 Dave 66 M Labor 
5 Luke 7 M Labor 
6 Ellen 80 F Labor 

自動生成インデックスは何も意味しません。私がdf_labor.ix [3] [']を使ってdf_laborの3番目(ゼロベース)の行を取得しようとすると、[1,3,5,6]の代わりに[0,1,2,3]名前 ']、私は'デイブ 'の代わりに'エレン 'を得ることができますか?

答えて

0

あなたはreset_indexを呼び出す必要があります:

df_labor = df[df.job == "Labor"].reset_index(drop = True) 
In [94]: df_labor    
Out[94]:     

    age job  name sex 
0 30 Labor Mike M 
1 66 Labor Dave M 
2 7 Labor Luke M 
3 80 Labor Ellen F 

デフォルトでは、パンダは、新しいデータフレームの列として古いインデックスを追加します。 drop = Trueはその列を削除します。

関連する問題