pandas.Seriesのインデックス(添字)[]を指定することで、行・列または要素の値を選択し取得することができる。[]の中に指定する値のタイプによって取得できるデータが異なる。ここでは以下の内容について説明する。行名・列名が整数値の場合の注意点pandas.DataFrameの場合、リストだと列の取得、スライスだと行の取得になるなど、慣れていないうちは混乱するような仕様になっている。ilocを使うとより明確に範囲の選択が可能。pandas.DataFrameで要素の値を抽出したり、列をスライス、行を行名・行番号やそのリストで選択することもできる。iloc今回のサンプルコードでは以下のcsvデータをread_csvで読み込んで使用する。sample_pandas_normal.csv引数index_colで最初の列をindexとしている。pandas_index.py既存のDataFrameの列をset_index()でindexに指定することもできる。単独の列をpandas.Seriesとして取得[]に列名(列ラベル)を単独で指定すると、選択した列が抽出されpandas.Seriesとして取得できる。pandas_index.pyattribute(属性)のように.に続けて列名を指定することもできる。列名が既存のメソッド名や属性名などと被るとそちらが優先されるので注意が必要。列名のリストを指定すると、選択した複数列が抽出されpandas.DataFrameとして取得できる。pandas_index.py要素数1のリストの場合も1列のpandas.DataFrameとなる。pandas.Seriesではない。pandas_index.pyスライスの場合は空のpandas.DataFrameとなる。スライスは行の指定だとみなされるため(後述)。pandas_index.pylocを用いると列のスライスも可能。ilocを用いると列名(列ラベル)ではなく列番号で指定することもできる。詳細は以下の記事を参照。単独・複数行をpandas.DataFrameとして取得[]にスライスを指定すると、該当範囲の複数行が抽出されpandas.DataFrameとして取得できる。pandas_index.pyマイナスの値を指定したり、start:stop:stepのようにstepを指定したりすることも可能。奇数行または偶数行を抽出して取得できる。pandas_index.pyあくまでもスライスでないとダメで、行番号をそのまま単独で指定するとエラーとなる。pandas_index.py一行だけ選択される場合も、取得できるのはpandas.DataFrame。pandas.Seriesにはならない。pandas_index.py行番号ではなく行名(行ラベル)でスライスを指定することもできる。行名(行ラベル)のスライスの場合はstopの行も選択されるという違いがある。pandas_index.pylocやilocを用いると行に対して行名・行番号を単独で指定してpandas.Seriesとして取得したり、リストで複数行を選択したりできる。詳細は以下の記事を参照。以下のpandas.Seriesを例とする。単独の要素の値をそれぞれの型で取得ラベル名・番号を単独で指定した場合はその値がそのまま取得できる。番号の場合、負の値で末尾からの位置を指定可能。-1が末尾(一番最後)。pandas.DataFrameの列名指定のように、.に続けてラベル名を指定することもできる。列名が既存のメソッド名や属性名などと被るとそちらが優先されるので注意。単独・複数の要素の値をpandas.Seriesとして取得リストの場合は選択した複数の値をpandas.Seriesとして取得できる。pandas_index_series.py要素数1のリストの場合、その要素そのものではなく要素数1のpandas.Seriesとなる。単独・複数の要素の値をpandas.Seriesとして取得スライスの場合も選択した複数の値をpandas.Seriesとして取得できる。ラベル名のスライスの場合はstopの行も選択される。pandas_index_series.py要素1個が選択された場合、要素数1のpandas.Seriesとなる。pandas_index_series.pypandas.DataFrameの要素の値を取得pandas.DataFrameからpandas.Seriesを抽出し、さらにそのpandas.Seriesから値を選択して取得することで、pandas.DataFrameから要素の値を取得できる。pandas_index.pyスライスやリストを組み合わせて任意の範囲を抽出することもできる。indexingと呼ばれ、選択範囲に値を代入する際にSettingWithCopyWarningが発生する場合があるため推奨されていない。詳細は以下の記事を参照。ilocを使うと行・列を一度に指定して選択可能。こちらのほうが望ましい。pandas_index.py行名・列名が整数値の場合の注意点これまでの例は行名・列名が文字列だったが、行名・列名が整数値の場合は注意が必要。以下のpandas.DataFrameを例とする。[リスト]の場合、指定した値は列名とみなされる。pandas_index_num.py[スライス]の場合、指定した値は行名ではなく行番号とみなされる。iloc(行番号)を使う。pandas_index_num.pypandas.Seriesの場合。pandas_index_num.pypandas.Seriesでは指定した値が番号ではなくラベル名だとみなされる。