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キーワード引数を使うことでインデックスラベルの振りなおしを行うことができます。
