
ゆうき( @BASEBALLY15 )です^^
複数のデータフレームを合わせたいのですが・・・
『concat』を使うと,データフレーム同士を結合することが出来ますよ^^
今回は,concatについて,ご紹介します.
よろしくお願いします・・・

目次
concatを使うと何が出来るの?

このように,2つのデータフレームを1つにまとめて表示させることが出来ます.
これ以外にも,様々な表示が出来ます.
それでは,コードを見ていきましょう⤵
結合(concat)の使い方をまとめました!
ライブラリ
まずは,今回使うライブラリを載せておきます.
# pandas をimport (表計算をしてくれる便利なライブラリ)
import pandas as pd
#行列を扱うためのライブラリ
import numpy as np
#正規性があるランダムな数を使うためのライブラリ
from numpy.random import randn
コード
2つのデータフレームをconcatで結合しよう!
1つ目のデータフレームを作ります.
dataframe_1 = pd.DataFrame({"A":[1,2,3,4,5],
"B":[6,7,8,9,10],
"C":[11,12,13,14,15]})
#実行
dataframe_1
A | B | C | |
---|---|---|---|
0 | 1 | 6 | 11 |
1 | 2 | 7 | 12 |
2 | 3 | 8 | 13 |
3 | 4 | 9 | 14 |
4 | 5 | 10 | 15 |
次に2つ目のデータフレームを作ります.
2つ目は,ランダムな数を並べます.
dataframe_2 = pd.DataFrame({"A":randn(3),
"B":randn(3),
"C":randn(3)})
#実行
dataframe_2
A | B | C | |
---|---|---|---|
0 | -1.160068 | 0.147458 | 1.125276 |
1 | 0.372971 | 0.658164 | -0.556152 |
2 | 0.497093 | -0.058413 | 1.453761 |
それでは,concatで結合してみましょう⤵
#concatを使ってみる(dataframe_1とdataframe_2を結合する)
data_concat = pd.concat([dataframe_1, dataframe_2])
#実行
data_concat
A | B | C | |
---|---|---|---|
0 | 1.000000 | 6.000000 | 11.000000 |
1 | 2.000000 | 7.000000 | 12.000000 |
2 | 3.000000 | 8.000000 | 13.000000 |
3 | 4.000000 | 9.000000 | 14.000000 |
4 | 5.000000 | 10.000000 | 15.000000 |
0 | -1.160068 | 0.147458 | 1.125276 |
1 | 0.372971 | 0.658164 | -0.556152 |
2 | 0.497093 | -0.058413 | 1.453761 |
このように,concatを使うと,データフレーム同士を結合することが出来ました.
次に,『Num』が表示された時の表示の仕方をご紹介します.
Numが表示された時はどうすればいいの?
『Num』が表示されるように,3つ目のデータフレームを作ります.
dataframe_3 = pd.DataFrame({"C":randn(3),
"D":randn(3),
"E":randn(3)})
#実行
dataframe_3
C | D | E | |
---|---|---|---|
0 | 1.523983 | -0.378601 | -1.720186 |
1 | -1.831580 | 0.846266 | -0.095803 |
2 | 2.479719 | -1.036963 | -0.484122 |
これと,1つ目のデータフレームをconcatで結合したいと思います.
#concatを使ってみる(dataframe_1とdataframe_3を結合する)
data_concat2 = pd.concat([dataframe_1, dataframe_3])
#実行
data_concat2
A | B | C | D | E | |
---|---|---|---|---|---|
0 | 1.0 | 6.0 | 11.000000 | NaN | NaN |
1 | 2.0 | 7.0 | 12.000000 | NaN | NaN |
2 | 3.0 | 8.0 | 13.000000 | NaN | NaN |
3 | 4.0 | 9.0 | 14.000000 | NaN | NaN |
4 | 5.0 | 10.0 | 15.000000 | NaN | NaN |
0 | NaN | NaN | 1.523983 | -0.378601 | -1.720186 |
1 | NaN | NaN | -1.831580 | 0.846266 | -0.095803 |
2 | NaN | NaN | 2.479719 | -1.036963 | -0.484122 |
このように,『Num』が表示されてしまいます.
そこで,2つのデータフレームのうち,
共通している行の値のみを取り出します.
コードはこのようになります⤵
#共通する行を結合
data_concat3 = pd.concat([dataframe_1, dataframe_3], join="inner")
#実行
data_concat3
C | |
---|---|
0 | 11.000000 |
1 | 12.000000 |
2 | 13.000000 |
3 | 14.000000 |
4 | 15.000000 |
0 | 1.523983 |
1 | -1.831580 |
2 | 2.479719 |
join=”inner”
を使うことで,共通している項目のみ取り出すことが出来ます.
ちなみに,共通している列を結合したい場合は,このように書きます⤵
#共通する列を結合
data_concat4 = pd.concat([dataframe_1, dataframe_3], join="inner", axis=1)
#実行
data_concat4
A | B | C | C | D | E | |
---|---|---|---|---|---|---|
0 | 1 | 6 | 11 | 1.523983 | -0.378601 | -1.720186 |
1 | 2 | 7 | 12 | -1.831580 | 0.846266 | -0.095803 |
2 | 3 | 8 | 13 | 2.479719 | -1.036963 | -0.484122 |
axis=1
を使うことで,共通している列を結合することが出来ます.
最後に,リストを結合する方法をご紹介します⤵
リストにアペンド(append)したデータを結合するためには?(本題)
Pythonを勉強し始めて,for文に慣れてくると,
値をリストに入れる作業を行う機会があります.
例えば,このような場合です⤵
#空のリストを用意
locate_list = []
i = 1
for i in range(12):
#指定したデータフレームの行を抽出
df10 = df2_b[6*i-6 : 6*i]
#リストに抽出した結果を入れる
locate_list.append(df10)
#実行
locate_list
[ Time Num1 Num2 1 2011/1/15 2:00 0 0 2 2011/1/15 3:00 0 0 3 2011/1/15 4:00 0 0 4 2011/1/15 5:00 0 0 5 2011/1/15 6:00 0 0 6 2011/1/15 7:00 0 0, Time Num1 Num2 7 2011/1/15 8:00 0 0 8 2011/1/15 9:00 0 0 9 2011/1/15 10:00 0 0 10 2011/1/15 11:00 0 0 11 2011/1/15 12:00 0 0 12 2011/1/15 13:00 0 0, Time Num1 Num2 13 2011/1/15 14:00 0 0 14 2011/1/15 15:00 0 0 15 2011/1/15 16:00 0 0 16 2011/1/15 17:00 0 0 17 2011/1/15 18:00 0 0 18 2011/1/15 19:00 0 0, Time Num1 Num2 19 2011/1/15 20:00 0 0 20 2011/1/15 21:00 0 0 21 2011/1/15 22:00 0 0 22 2011/1/15 23:00 0 0 23 2011/1/16 0:00 0 0 24 2011/1/16 1:00 0 0]
concatを使うと,これを一つに結合することが出来ます.
コードはこのようになります⤵
#リストを結合する
df_concat = pd.concat(locate_list)
#実行
df_concat
Time | Num1 | Num2 | |
---|---|---|---|
1 | 2011/1/15 2:00 | 0 | 0 |
2 | 2011/1/15 3:00 | 0 | 0 |
3 | 2011/1/15 4:00 | 0 | 0 |
4 | 2011/1/15 5:00 | 0 | 0 |
5 | 2011/1/15 6:00 | 0 | 0 |
… | … | … | … |
62 | 2011/1/17 15:00 | 3 | 19 |
63 | 2011/1/17 16:00 | 3 | 18 |
64 | 2011/1/17 17:00 | 3 | 18 |
65 | 2011/1/17 18:00 | 3 | 17 |
66 | 2011/1/17 19:00 | 3 | 17 |
終わりに
本記事を読んでいただき,本当にありがとうございます!
今回は,結合(concat)の使い方についてご紹介しました.
Pythonで,データフレーム扱う時に,concatを使う機会がよくあるので,
ぜひ,この記事を見て,勉強してみてください^^
それでは・・・