2016-04-01 7 views
2

私は空のパンダのデータフレームを持っているとしましょう。これらの2つのPython pandasデータフレームコマンドの違いは何ですか?

import pandas as pd 
m = pd.DataFrame(index=range(1,100), columns=range(1,100)) 
m = m.fillna(0) 

次の2つのコマンドの違いは何ですか?

m[2][1] 
m[2].ix[1] # This code actually allows you to edit the dataframe 

今後の参考に役立てたい場合は、お気軽にお読みください。

+2

関連:http://stackoverflow.com/questions/ 20838395/ix-index-for-pandasシリーズ用 – John

+2

上記以外に、最初の行が失敗し、2番目の行が失敗する理由を調べる必要があります。http://pandas.pydata。組織/pandas-docs/stable/indexing.html#indexing-view-versus-copy – EdChum

答えて

3

短い答えは(理由はEdChumのリンク@参照)あなたはおそらく、これらのいずれかを行うべきではないということです。

m[2][1] 
m[2].ix[1] 

あなたは、一般に、単一ixiloc、または上のlocコマンドを使用する必要があります行と列の両方でアクセスする必要があるときは、いつでもデータフレーム全体を取得することができます。例えば、図1及び図2にあなたの例に比べて逆になっている

m.iloc[1,2] 

留意さix/iloc/locすべては、行の標準構文カラムを使用するため。連鎖しているため構文が逆転し、最初にデータフレーム(列である)から列を選択し、その列から行を選択しています。

あなたのような単純なケースでは、それほど問題にはなりませんが、ix/iloc/locの有用性は、複雑な方法でデータフレームを「編集」できるように設計されているということです。

pandas iloc vs ix vs loc explanation?

とも標準パンダのドキュメントで:ここix/iloc/locの本当に良い説明があり

http://pandas.pydata.org/pandas-docs/stable/indexing.html

関連する問題