PandasのDataFrameに行を追加するappendメソッドをマスターしよう!

こんにちは!インストラクターのフクロウです!

この記事では、Pandasのデータフレームに新しい要素を行方向に追加するDataFrameのappendメソッドを紹介します。

append関数、PythonのlistNumPyのnp.arrayにもありましたね。

同様の関数がPandasにもあります。

よく使う関数なので、使い方を覚えておきましょう!

目次

開発環境

この記事を書くために使った開発環境は以下のとおりです。

ライブラリのバージョンなど

  • OS=”Ubuntu 18.04.1 LTS”
  • Python 3.7.0
  • Pandas 0.23.4


OSが異なっても基本的には同じ操作で記事中のプログラムは再現できるので、試してみてください!

appendのAPI

appendはpandas.DataFrameのメソッドです。

DataFrame.append(other,  # 大切なのはこの引数
          ignore_index=False, 
          verify_integrity=False, 
          sort=None)

基本的にはオリジナルのDataFrameのメソッドとして呼び出し、追加したいDataFrameを第一引数にすることで使えますよ!

引数や返り値の詳しい解説は以下の公式ドキュメントを参照してください。

次の章で特に大切な部分の使い方を紹介していきます!

appendの使い方

appendの基本操作

まずはシンプルな結合を行ってみます。

同じ列数のDataFrameを2つ用意して、これらをつなげてみましょう。

In [1]:
import pandas as pd
import numpy as np

# DataFrameに入れるデータ
x1 = np.arange(0,10).reshape((2,5))
x2 = np.arange(10,20).reshape((2,5))

print("x1:")
print(x1)
print("x2:")
print(x2)

Out[1]

x1:
[[0 1 2 3 4]
 [5 6 7 8 9]]
x2:
[[10 11 12 13 14]
 [15 16 17 18 19]]
In [2]:
# x1, x2からDataFrameを作成

df1 = pd.DataFrame(x1)
df2 = pd.DataFrame(x2)

df1.head()
Out[2]:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
In [3]:
df2.head()
Out[3]:
0 1 2 3 4
0 10 11 12 13 14
1 15 16 17 18 19

ここまででDataFrameの準備ができました。

df1にdf2を追加してみましょう。

In [4]:
df1.append(df2)
Out[4]:
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
0 10 11 12 13 14
1 15 16 17 18 19

結合できました!

この操作ではメソッドを呼び出したDataFrame(ここではdf1)の後ろに引数のDataFrameが追加される形になります。

列数が違うDataFrameを結合

ちなみに列数が違う場合は、結合したときに値がない要素がNaN(Non a Number)になりますが、一応結合できます。

In [5]:
# 列数が違う結合の例に使うDataFrameです。 
df2.T
Out[5]:
0 1
0 10 15
1 11 16
2 12 17
3 13 18
4 14 19
In [6]:
# 違う列数のDataFrame同士を結合 
df1.append(df2.T)
Out[6]:
0 1 2 3 4
0 0 1 2.0 3.0 4.0
1 5 6 7.0 8.0 9.0
0 10 15 NaN NaN NaN
1 11 16 NaN NaN NaN
2 12 17 NaN NaN NaN
3 13 18 NaN NaN NaN
4 14 19 NaN NaN NaN

[おまけ]appendで作ったDataFrameの行indexを更新

appendで2つのDataFrameを結合した場合、行のindexは元になったDataFrameのものを引き継ぎます。

もしも0行目からキレイにナンバリングしたい場合は、DataFrameのindex属性に新しいindexを代入します。

In [7]:
df3 = df1.append(df2.T) 
df3.index = [0,1,2,3,4,5,6] 

# DataFrameの表示
df3
Out[7]:
0 1 2 3 4
0 0 1 2.0 3.0 4.0
1 5 6 7.0 8.0 9.0
2 10 15 NaN NaN NaN
3 11 16 NaN NaN NaN
4 12 17 NaN NaN NaN
5 13 18 NaN NaN NaN
6 14 19 NaN NaN NaN

まとめ

この記事では、DataFrameに行方向の要素を追加するdf.appendを紹介しました!

appendメソッドを使えば用意した2つのDataFrameを簡単に結合する事ができます。

要点

  • df.appendを使えば2つのDataFrameを行方向に結合することができる
  • 行のindexは元のDataFrameのまま
  • 列数が異なっていても結合できる

簡単だけど強力なappendメソッド、listやnp.arrayと同様に頻繁に使うことになると思います。

是非使いこなしてください!

この記事を書いた人

第一言語はPythonです。
皆さんRustやりましょう。

目次