【Python】DFの値を横方向にリストで取得する方法【データフレーム】

こんなことがあった。

以下のようなデータフレームで、横方向にデータを取得したい場面があった。
Excelなどの表の見た目や扱いに慣れていると、至極どうってことない気がするが、
pandasでやろうとした際に、一瞬迷ったのでメモしておく。

実際には横方向にもっと長いが、
やりたいこととしては、Group:’a’ のカラムA~Eの値を、リストに取得したい。

模索した結果、以下の方法で実現できた。

.loc[:, :].values.tolist()

transpose (.T)(DFの縦横を入れ替える)

※「.T」はtranspose()の省略で、どっちでも同じく機能します。
※他にも良い方法はあると思います。

Example

.loc[:, :].values.tolist()の場合

出力結果

[1, 4, 7, 10, 13]

今回は紹介を省くが、
上記の書き方をさらに工夫して、さらにコード行を減らすこともできる。

transpose (.T)(DFの縦横を入れ替える)

transpose後は、データフレームが以下のように縦横入れ替わっている。

0 1 2
Group a b c
A 1 2 3
B 4 5 6
C 7 8 9
D 10 11 12
E 13 14 15

Group:’a’ をリストに取り出してみる。
ここではあえて、「list」で取り出す。

出力結果

[1, 4, 7, 10, 13]

①の方法と同じ結果が取得できている。
しかし、②の方法は、「インタラクティブ実行」(jupyterlab)などでの使用が向いているかもしれない。
縦横を入れ替えるため、カラム名がindexになるし、慣れが必要かも。

まとめると

・「特定行の、特定列の値をリストで取り出す」というのが、意外とややこしかったが
 慣れてしまえば、とてもシンプルに行うことができる。

・transposeは、.locに比べて少しだけ面倒かもしれないが、インタラクティブな環境であれば直感的であると感じた。