最終更新日:2021/9/1

List(li)、Series(se)から DataFrame(df)へ変換する方法を説明します。
正確には、List、SeriesからDataFrameの作成、あるいは、Seriesの連結です。
これは、既に用意したListをもとに、これをDataFrameにしたい場合や、既に用意したSeriesからDataFrameを作りたい場合に使います。

DataFrame(df)がデータを扱う基本形式なので、この操作はよく使います。

【説明すること】

【各変換方法のページ一覧】

To(変換後)
ListSeriesDataFramearray
From
(変換前)
Listna省略5.3の1.省略
Series5.2の1.na5.3の2.省略
DataFrame5.2の2.省略na5.4の2.
array5.2の3.省略5.4の1.na

1. ListからDataFrame (li=>df)

複数のList(li)から、DataFrame(df)を作成する場合です。この場合、

pd.DataFrame()


を使いますが、DataFrame()の引数に[li1,li2]と指定するか(行方向)、zipを使ってzip(li1, li2)と指定するか(列方向)で結果が異なります。

これは、Listを横に広げて連結するか、縦に広げて連結するか、という違いになります。
以下で詳しく説明します。

カラム名やindex名を指定する場合は、pd.DataFrame()の中にcolumns = [], index =[]でオプションを指定します。

1.1. Listを行として、行方向に連結

Listを行として扱い、これを行方向に連結する場合です。横に広げて、それを下に連結するイメージです。

pd.DataFrame([li1, li2])

と書きます。

【ポイント】

  • 1. [li1, li2]のように、[]の中にListを列挙します。つまり、Listでli1, li2を指定します。
  • 2. オプションの、columns=[], index=[]は、列やindexの数が一致しないとエラーとなります。
    例)列が3つなのに、columns =[‘clm0’, ‘clm1’]と2つしか指定していない。

1.2. Listを列として、列方向に連結

Listを列として扱い、これを列方向に連結する場合です。縦に広げて、右に連結するイメージです。
zipを使って、

pd.DataFrame(zip(li1, li2), columns=['clm0', 'clm1'])

と書きます。
行方向と同様に、columns=index=で指定するListの数に注意してください。実際の数と指定した数が一致しないとエラーとなります。

2. SeriesからDataFrame(se=>df)

SeriesからDataFrameを作る場合です。
Seriesを行とするか、列とするか、或いは、複数のSeriesの場合で、分けて説明します。

2.1 行にする場合

この場合、pd.DataFrame()の引数にseをそのまま指定して、

df = pd.DataFrame(se)

と書きます。
指定したseのindexがそのままdfのindexになり、nameはカラム名(列名)になります。

2.2 列にする場合

SeriesをListにして指定すれば、列となります。この時、Seriesのnameがindex名となります。

df2 = pd.DataFrame([se])

ここで、seを[]でくくるのを忘れないでください。[]でくくる事でListになります。

2.3 複数のSeriesの場合

(a) 列方向への連結

連結の話に帰着しますが、pd.concat([])を使って、

df = pd.concat([se1, se2], axis=1)

と書きます。

【ポイント】

.concat()の中は[]でくくること、axis=1を指定するのを忘れないように注意してください。


(b) 行方向への連結

se1, se2をListで指定して、つまり[se1, se2]のように[]でくくって、

df = pd.DataFrame([se1, se2])

と書きます。