【Python】DataFrameの行、列の削除、追加を行う方法

【Python】DataFrameの行、列の削除、追加を行う方法

この記事ではDataFrameの行や列の削除、追加をどうやるの??ということを紹介しています。

この記事の目標
・DataFrameの行、列削除動作の理解
・DataFrameの行、列追加動作の理解

DataFrameとSeries型の違いがわからない人はまず以下の記事で理解しましょう!!
DataFrameとSeriesの違いを紹介
その他Pythonの記事は以下にまとめています!!

Python記事まとめ

[スポンサーリンク]


削除に使うメソッド

削除する時はdropメソッドを使用します。

drop(value, axis=0)
オプションなど 初期値 説明
value 列名または行名を指定
axis 0 行と列のどっちかというのを指定する(0=行、1=列)
inplace False DataFrameに上書きするか否かの設定

最低限必要なのはvalueでその他のオプションは任意です。
では実際に行、列を削除したサンプルとinplaceオプションを使用したサンプルを紹介します。

 

行の削除

行を削除するにあたり、4行3列のDataFrameを作成します。

import pandas as pd
df=pd.DataFrame([["A",2,3],["B",1,6],["C",3,9],["A",4,5]])

#print表示
#  0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5

以上のDataFrameの1行目を削除してみましょう。
dropメソッドで行番号または行名を指定するだけで削除できます。

#1行目を削除
df1=df.drop(1)

#print表示
#  0 1 2
#0 A 2 3
#2 C 3 9
#3 A 4 5

ちなみに以下のようにindex=〇で行番号か行名を指定して削除もできます。

#1行目の削除
df1=df.drop(index=1)

#print表示
# 0 1 2
#0 A 2 3
#2 C 3 9
#3 A 4 5

まとめて削除する場合はリストで行番号か行名を指定します。

#まとめて削除
df1=df.drop([1,2])

#print表示
#  0 1 2
#0 A 2 3
#3 A 4 5

列の削除

次に列を削除します。
今回も以下のDataFrameを使用します。

import pandas as pd
df=pd.DataFrame([["A",2,3],["B",1,6],["C",3,9],["A",4,5]])

#print表示
#  0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5

列を削除する時はaxisを1に指定します。
これでvalue対象が列になります。
今回は1列目を削除してみます。

#1列目の削除を行う
df1=df.drop(1, axis=1)

#print表示
# 0 2
#0 A 3
#1 B 6
#2 C 9
#3 A 5

ちなみにaxisを使用しなくともcolumns=〇で列番号か列名を指定しても削除できます。

#1列目の削除
df.drop(columns = 1)
#print表示
# 0 2
#0 A 3
#1 B 6
#2 C 9
#3 A 5

まとめて削除する場合はリストで列番号か列名を指定します。

#まとめて削除
df1=df.drop([1,2],axis=1)

#print表示
# 0
#0 A
#1 B
#2 C
#3 A

inplaceオプション使用

inplaceオプションは指定したDataFrameを上書きするか否かを設定するオプションです。
デフォルトではFalseですが、これをTrueに設定するとDataFrameが上書きされます。

#列削除して上書き保存
df.drop([1,2],axis=1,inplace=True)

#print表示
#  0
#0 A
#1 B
#2 C
#3 A 

dropする前のDataFramedropした後のDataFrameが上書きされていることが確認できます。

ちなみに上書き動作の時は戻り値がありません。(Noneになる)

#戻り値を受け取る 
re=df.drop([1,2],axis=1,inplace=True) 
#reのprint表示 
#None

[スポンサーリンク]


行の追加

行追加動作を紹介するために以下のDataFrameを使用します。

import pandas as pd
df=pd.DataFrame([["A",2,3],["B",1,6],["C",3,9],["A",4,5]])

#print表示
#  0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5

行を追加する時はlocメソッドを使用します。
locメソッドは[ ]内の数値また文字列が行を表すことを示します。
例えば以下は1行目を表します。

df.loc[1]

対して以下は1列目を表します。

df[1]

このlocメソッドを用いて新規行の行番号か行名を指定し、
そこに値を代入することで新規行の追加が行えます。
今回は4行目を新規行として追加し、[“D”,10,10]を代入しています。

#行に代入
df.loc[4]=["D",10,10]

#print表示
# 0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5
#4 D 10 10

もし行の値を全て同じ値にする場合はリストではなく値を1つだけ代入します。

#行に同じ数値を代入
df.loc[4]=0

#print表示
# 0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5
#4 0 0 0

列の追加

列追加動作を紹介するのに同じように以下のDataFrameを使用します。

import pandas as pd
df=pd.DataFrame([["A",2,3],["B",1,6],["C",3,9],["A",4,5]])

#print表示
#  0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5

列追加する時は新規列の列番号か列名を指定して値を代入します。
今回は4列目を作成し、そこに[“D”,10,10,10]を代入しました。

#存在しない列名を指定して代入
df[4]=["D",10,10,10]

#print表示
#  0 1 2 4
#0 A 2 3 D
#1 B 1 6 10
#2 C 3 9 10
#3 A 4 5 10

全て同じ値を代入したい場合はリストではなく数値を1つ指定して代入します。

#全部同じ値で列追加
df[4]=0

#print表示
#  0 1 2 4
#0 A 2 3 0
#1 B 1 6 0
#2 C 3 9 0
#3 A 4 5 0

行、列追加時に便利なshapeメソッド

行、列を追加する時に現在の行数や列数がわからないということがほとんどでしょう。
その時に便利なのが行数と列数を返してくれるshapeメソッドです。

df.shape
戻り値
[行数、列数]

 

以下のDataFrameで検証してみます。

import pandas as pd
df=pd.DataFrame([["A",2,3],["B",1,6],["C",3,9],["A",4,5]])

#print表示
#  0 1 2
#0 A 2 3
#1 B 1 6
#2 C 3 9
#3 A 4 5

以上の4行3列のDataFrameshapeメソッドを使用してみましょう。

#行と列数を取得 
sh=df.shape 

#print表示(行数、列数) 
#(4, 3)

#sh[0]は4→行数
#sh[1]は3→列数

そうするとDataframe4行、3列であるとリストで返してくれました。
このようにshapeメソッドで行数や列数を取得し、最後行に行や列を追加すると便利です。

 

shapeを使って行追加

今回はすでに行番号0~3が存在しているのでshapeメソッドで4行分存在すると表示されます。
そのshapeの戻り値を使用して5行目(行番号4)を代入するといった合わせ技を行います。

#行と列数を取得 
sh=df.shape 

#print表示(行数、列数) 
#(4, 3)

#行番号4を新規追加
df.loc[sh[0]]=0 

#print表示 
#  0 1 2 
#0 A 2 3 
#1 B 1 6 
#2 C 3 9 
#3 A 4 5 
#4 0 0 0

df.loc[sh[0]]に代入することで行番号4が追加されていることが確認できます。

shapeを使って列追加

すでに列番号0~2が存在しているのでshapeメソッドで3列分存在すると表示されます。
そのshapeの戻り値を使用して4列目(列番号3)を代入するといった合わせ技を行います。

#行と列数を取得 
sh=df.shape 

#print表示(行数、列数) 
#(4, 3)

#列番号3を新規追加
df[sh[1]]=0 

#print表示 
#  0 1 2 3
#0 A 2 3 0
#1 B 1 6 0
#2 C 3 9 0
#3 A 4 5 0

df[sh[1]]に代入することで列番号3が代入されたことが確認できます。

[スポンサーリンク]


Pandasカテゴリの最新記事