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】K-NNによる分類モデル

Contents1 概要2 データ3 ソースコード4 勉強になったこと 概要 機械学習のコードのお勉強のためPythonのscikit-learnのK-NNを使用して分類問題をやってみます。 データ …

Python scikit-learnのImportError

Anaconda3でscikit-learnのdatasetsのimport時にエラーが出たため、対処法についてメモ Contents1 環境2 エラー3 対処 環境 ①OSWindows10 ②An …

【Python】で調和平均と絶対平均計算

Contents1 目的2 調和平均3 絶対平均 目的 前回、一般的に平均として使われる算術平均に加え、○○率の平均などの計算に向いている幾何平均の定義と計算方法について勉強しました。 今回は、さらに …

【Python】ベイズの定理を実際に試行して確認

Contents1 ベイズの定理とは2 具体的な問題3 Pythonで実際に確認 ベイズの定理とは ある事象について、その原因となる候補(互いに独立)がいくつかあり、それぞれの原因は発生確率を持ってい …

Python formatの基本的な使い方

Contents1 目的2 文字列整形3 型指定 目的 python3系の文字列操作のメソッドであるformatの基本的な使い方について勉強する。 文字列整形 formatの引数に文字列等(intやf …

言語切り替え

カテゴリー