<Python, pandas> データフレーム上の [ ] による行、列の選択
データフレームDataFrame
で[]
を使って、
行row/index
か列column
を選択getting
する方法。
ちょっとはまったので、メモ。
まずは、データフレーム作成。
In [511]: df = pd.DataFrame(data=np.random.randn(5,5)) In [512]: df Out[512]: 0 1 2 3 4 0 0.007971 -0.615854 -0.136663 -0.531834 0.303792 1 0.129563 0.707930 0.679199 0.903427 0.857635 2 1.766439 1.291801 0.149056 -0.365731 1.086456 3 1.283418 -0.376622 -0.447210 0.012220 -0.358600 4 1.276012 1.135752 -0.512724 0.450186 -0.462273
列を選択+値を一括書き換え。
In [513]: df[0]=0 In [514]: df Out[514]: 0 1 2 3 4 0 0 -0.615854 -0.136663 -0.531834 0.303792 1 0 0.707930 0.679199 0.903427 0.857635 2 0 1.291801 0.149056 -0.365731 1.086456 3 0 -0.376622 -0.447210 0.012220 -0.358600 4 0 1.135752 -0.512724 0.450186 -0.462273
今度は、行の選択。スライス。
ここがはまりどころ! [hoge:hoge]
は行のスライスとなる!
In [515]: df[0:2]=2 In [516]: df Out[516]: 0 1 2 3 4 0 2 2.000000 2.000000 2.000000 2.000000 1 2 2.000000 2.000000 2.000000 2.000000 2 0 1.291801 0.149056 -0.365731 1.086456 3 0 -0.376622 -0.447210 0.012220 -0.358600 4 0 1.135752 -0.512724 0.450186 -0.462273
じゃー列は???は、[[hoge,hoge]]
となる。 スライスじゃなくて、column
名の選択。
In [517]: df[[1,2]]=2 In [518]: df Out[518]: 0 1 2 3 4 0 2 2 2 2.000000 2.000000 1 2 2 2 2.000000 2.000000 2 0 2 2 -0.365731 1.086456 3 0 2 2 0.012220 -0.358600 4 0 2 2 0.450186 -0.462273
ここにこっそり書いてあった。 はまるなー。。。
10 Minutes to pandas — pandas 0.16.2 documentation