<Python, pandas, items> DataFrameの要素を1つづつ取り出す。
データフレームDataFrame
の要素を1つづつ取り出す方法。
df.items
か、df.iteritems
(どっちも同じっぽい)
まずはデータフレーム作成。
In [44]: import pandas as pd In [45]: import numpy as np in [52]: df = pd.DataFrame(np.random.randn(5,3)) In [54]: df.columns = list('abc') In [55]: df.index = list('12345') In [56]: df.head() Out[56]: a b c 1 -0.829961 0.773827 1.231567 2 -0.361747 0.059636 0.879749 3 0.620062 0.870305 2.227510 4 -0.074908 -0.127938 -0.125080 5 0.873882 -0.674697 0.838548
で、要素取り出しのループ処理。
items
を使うと、カラム単位で要素が順に送り出されてくる。
各要素は配列array
状態で出てくるが、ループの順番の番号を配列[0]に入れて返してくる。
In [57]: for i in df.items(): ...: print(i) ...: ('a', 1 -0.829961 2 -0.361747 3 0.620062 4 -0.074908 5 0.873882 Name: a, dtype: float64) ('b', 1 0.773827 2 0.059636 3 0.870305 4 -0.127938 5 -0.674697 Name: b, dtype: float64) ('c', 1 1.231567 2 0.879749 3 2.227510 4 -0.125080 5 0.838548 Name: c, dtype: float64)
なので、要素index
指定でさらに細かく指定できる。
In [58]: for i in df.items(): ...: print(i[1]) ...: 1 -0.829961 2 -0.361747 3 0.620062 4 -0.074908 5 0.873882 Name: a, dtype: float64 1 0.773827 2 0.059636 3 0.870305 4 -0.127938 5 -0.674697 Name: b, dtype: float64 1 1.231567 2 0.879749 3 2.227510 4 -0.125080 5 0.838548 Name: c, dtype: float64 In [59]: for i in df.items(): ...: print(i[1][1]) ...: -0.361746546144 0.0596364186067 0.879749063219 In [60]: for i in df.items(): ...: print(i[1][0]) ...: -0.829960786524 0.773827192285 1.23156687174
特定カラムを選択した場合は、
In [61]: for i in df.a.items(): ...: print(i) ...: ('1', -0.82996078652431016) ('2', -0.36174654614421736) ('3', 0.62006245997384801) ('4', -0.074908061386246214) ('5', 0.87388215398298885) In [62]: for i in df.a.items(): ...: print(i[1]) ...: -0.829960786524 -0.361746546144 0.620062459974 -0.0749080613862 0.873882153983
マニュアルは下記。
Essential Basic Functionality — pandas 0.16.1-62-g1d87174 documentation
ついでに過去記事も。