Python

【Python】DataFrameの一列をきれいにリストへ変換する

投稿日:

概要

pythonでデータベースからデータを取得するときに非常に便利なライブラリとしてpandasがあります。read_sqlメソッドを使うとことでselect文を使用してデータベースからDataFrame型でデータを取得できます。

ただ、データベースのテーブルのうちの一列だけリスト型で取得したいときに少し躓いたので、対処方法についてメモします。

データベースから一列取得する例

例えば、データベース側(PostgreSQLとします)に以下のようなテーブルがあったとします。

abc
110100
220200
330300
440400
test_table

この表からa列だけをpandasで取り出してみます。

import pandas as pd
import psycopg2

connection = psycopg2.connect(host='host', dbname='database', user='username', password='password')
df = pd.read_sql("SELECT a FROM test_table", connection)
df.head()

結果

このa列をリストにしたいなぁ、思ったとき、直感的にはイメージするのは[1,2,3,4]みたいなリストだと思います。

では、実際にこれをリスト化してみます。

df.values.tolist()

結果
[[1], [2], [3], [4]]

二重リストで出てきてイメージと違う・・・

当たり前ですが、いくらselect文で一列だけ取り出してもDataFrameはDataFrameなので、values.tolist()でリスト化しても二重になってしまいます。今回はこれを一重リストにします。

一重リストにする

itertoolsを使うことで、以下のコードで実現できます。

import itertools
a = df.values.tolist()
list(itertools.chain.from_iterable(a))

結果
[1, 2, 3, 4]

非常に便利なので、今後も使用する機会が多くなりそうです。

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Python】pandas dateframeで日時を日付と時間に分ける

Contents1 元データ2 日付と時刻にばらすコード 元データ このようなデータフレームがあり、日付と時刻にばらしたい場合の話。 import pandas as pd import dateti …

Python dataframeからMySQLにinsertする

Contents1 目的2 環境3 Step1 : 挿入先テーブル用意4 Step2 : 挿入用データ準備5 Step3 : MySQLへの挿入6 補足 目的 pythonのdataframeはデータ …

CentOSからAnacondaアンインストール

Contents1 目的2 Step1 : .pyenvの削除3 Step2 : bash_profileのpathの削除4 Step3 : .condaの削除5 Step4 : 確認 目的 以下の記 …

【Python】算術平均と幾何平均計算

Contents1 目的2 平均3 算術平均4 幾何平均5 まとめ 目的 統計学を使いこなしたい。でも参考書を読んでいても難しい概念や数式が沢山出てきて、その時は分かったつもりになっても後で実践的に使 …

【Python】決定係数と相関係数の計算

Contents1 目的2 決定係数とは?3 Pythonによる決定係数の計算4 相関係数 目的 前回、あるデータXからデータYの関係を単回帰による線形方程式で表すことを行いました。ただし、これはあく …

言語切り替え

カテゴリー