次のデータフレームがあるとします。
tmp = np.random.randn(10,4)
df = pd.DataFrame(tmp, index=pd.date_range('1/1/2012', periods=tmp.shape[0]),
columns=['A', 'B', 'C', 'D'])
> b
A B C D
2012-01-01 0.471846 1.130041 -0.614117 0.882738
2012-01-02 -1.431566 0.680617 -0.615331 0.288740
2012-01-03 0.398567 -0.115388 -0.869855 -1.273666
2012-01-04 0.379501 0.192329 -1.942184 0.694004
2012-01-05 1.306329 -0.803856 0.417033 -0.655907
2012-01-06 -0.599877 0.696549 -0.252789 1.367977
2012-01-07 -1.618916 0.216571 -0.499880 0.386853
2012-01-08 0.415002 0.139775 0.251842 0.021379
2012-01-09 2.536787 0.737672 -0.740485 -0.890189
2012-01-10 -1.553530 -0.100950 -0.237478 -0.295612
どのようにできるのか:
- 特定の行/列の位置インデックス付け? (そして対応するサブデータフレームを取得します)
- 行/列の範囲の位置インデックス付け? (そして対応するサブデータフレームを取得します)
単一エントリの行列索引付けの場合:
たとえば、場所のサブデータフレームにインデックスを付けたいとします[1,2]
(numpyの「マトリックス」表記で)。出力は次のようになります。
C
2012-01-02 -0.615331
次の3つの方法を試しましたが、どれもうまくいきませんでした::
df[1,2]
df[1][2]
df.take([1])[2]
機能する唯一の方法は次のとおりです。
df.ix[1,2]
df.irow(1)[2]
しかし:
私のインデックスが整数である場合(上記の場合の日付とは対照的に)、ラベルのインデックス付け
.ix
がデフォルトになるため、位置インデックス付けに使用するのは危険です。詳細については、こちらを参照してください: Start:stop slicing inconsistencies between numpy and Pandas? .表記から表記に
irow
切り替える必要があるため、使用が面倒です(オブジェクトを返します)()
[]
irow
Series
範囲行列索引付けの場合:
たとえば[1:3,2:3]
、(numpy 行列表記) の場所にある要素にインデックスを付けたいとします。出力は次のようになります。
B
2012-01-02 -0.615331
2012-01-03 -0.869855
ストップ インデックスを除外していることに注意してください(つまり、numpy 表記法に固執しています)。
何かご意見は?