Pandasの複数のSeriesを連結する方法

PythonモジュールのPandasで生成できる複数のSeriesを連結する方法です。

スポンサーリンク

Pandasの複数のSeriesを連結

PythonのPandasの複数のSeriesを連結するに2つの方法があります。

  • 方法1:appnedを使う方法
  • 方法2:concatを使う方法

Pandasの複数のSeriesを連結・appnedを使う方法

PandasのSeriesはappnedを使って連結することができます。

#Seriesの連結(append)
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )

jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

series_new = series_taro.append( series_jiro )
print( series_new )

上記コードの実行結果は以下の通りです。

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
英語     92
数学     69
国語     80
社会     63
理科     70
家庭科    45
音楽     95
dtype: int64

また、連結時にignore_indexキーワード引数を使えばインデックスを振りなおすことができます。

次のコードは連結時にインデックスラベルを振りなおします。(ignore_index=True)

#Seriesの連結(append)
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )


jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

series_new = series_taro.append( series_jiro )
print( series_new )

#インデックス振りなおし
series_new = series_taro.append( series_jiro, ignore_index=True )
print( series_new )

上記の実行結果は

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
英語     92
数学     69
国語     80
社会     63
理科     70
家庭科    45
音楽     95
dtype: int64
0    92
1    69
2    80
3    63
4    70
5    45
6    95
dtype: int64

になり、インデックスラベルが振りなおされていることがわかります。

次のコードは連結時にインデックスラベルを振りなおしません。(ignore_index=False)
(ignore_index=Falseはデフォルトの動作に設定されています。)

#Seriesの連結(append)
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )

jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

series_new = series_taro.append( series_jiro )
print( series_new )

#インデックス振りなおさない(デフォルトの動作)
series_new = series_taro.append( series_jiro, ignore_index=False )
print( series_new )

上記の実行結果は

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
英語     92
数学     69
国語     80
社会     63
理科     70
家庭科    45
音楽     95
dtype: int64
英語     92
数学     69
国語     80
社会     63
理科     70
家庭科    45
音楽     95
dtype: int64

になり、インデックスラベルが振りなおされていないことがわかります。

Pandasの複数のSeriesを連結・concatを使う方法

PandasのSeriesはconcatを使って連結することができます。

#Seriesの連結(contact)
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )

jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

hanako = { "フランス語":28 }
series_hanako = pd.Series( hanako )
print( series_hanako )

series_new = pd.concat( [ series_taro, series_jiro, series_hanako ] )
print( series_new )

上記の実行結果は

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
フランス語    28
dtype: int64
英語       92
数学       69
国語       80
社会       63
理科       70
家庭科      45
音楽       95
フランス語    28
dtype: int64

になり、3つのSeriesが連結されていることがわかります。

また、連結時にignore_indexキーワード引数を使えばインデックスを振りなおすことができます。

次のコードは連結時にインデックスラベルを振りなおします。(ignore_index=True)

#Seriesの連結(contact)・結合できるSeriesは2個以上
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )

jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

hanako = { "フランス語":28 }
series_hanako = pd.Series( hanako )
print( series_hanako )

series_new = pd.concat( [ series_taro, series_jiro, series_hanako ], ignore_index=True )
print( series_new )

上記の実行結果は

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
フランス語    28
dtype: int64
0    92
1    69
2    80
3    63
4    70
5    45
6    95
7    28
dtype: int64

になり、インデックスラベルが振りなおされていることがわかります。

次のコードは連結時にインデックスラベルを振りなおしません。(ignore_index=False)
(ignore_index=Falseはデフォルトの動作に設定されています。)

#Seriesの連結(contact)・結合できるSeriesは2個以上
import pandas as pd

taro = { "英語":92, "数学":69, "国語":80, "社会":63, "理科":70 }
series_taro = pd.Series( taro )
print( series_taro )

jiro = { "家庭科":45, "音楽":95 }
series_jiro = pd.Series( jiro )
print( series_jiro )

hanako = { "フランス語":28 }
series_hanako = pd.Series( hanako )
print( series_hanako )

series_new = pd.concat( [ series_taro, series_jiro, series_hanako ], ignore_index=False )
print( series_new )

上記の実行結果は

英語    92
数学    69
国語    80
社会    63
理科    70
dtype: int64
家庭科    45
音楽     95
dtype: int64
フランス語    28
dtype: int64
英語       92
数学       69
国語       80
社会       63
理科       70
家庭科      45
音楽       95
フランス語    28
dtype: int64

になり、インデックスラベルが振りなおされていないことがわかります。

まとめ

PandasのSeriesはappned、concatを使って連結することができます。

appnedは2つのSeriesを連結することができ、concatはリスト(list)で連結するSeriesを渡すので2個以上のSeriesを連結することができます。

またappnedでもconcatでもignore_indexキーワード引数を使うことでインデックスラベルの振りなおしを行うことができます。

スポンサーリンク
スポンサーリンク
Python学習におすすめの本
Python
スポンサーリンク
ソフトウェア開発日記
タイトルとURLをコピーしました