【毎日Python】Pythonでデータフレームの値に上書き、列を追加する方法|DataFrame.assign

import pandas as pd
df = pd.DataFrame({'A店': ['apple', 'banana', 'apple', 'apple', 'banana'],
                   'B店': ['banana', 'apple', 'strawberry', 'apple', 'banana'],
                   'C店': ['apple', 'apple', 'banana', 'apple', 'banana']},
                  index = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'])
df

Pythonでデータフレームの列に新しい列を追加したり列の値を上書きする方法です。
使用するのは、PythonのPandasライブラリのassignメソッドです。
このような簡単なデータフレームを作成します。

df.assign(A店='peach')

まず、それぞれの列の値を上書きしてみましょう。
df.asignで引数に、列名と上書きしたい値を指定します。
実行します。
A店の値をすべてpeachに変更できました。
このように引数に1つの値を指定すると、列内のすべての値に適用されます。

df

ここでデータフレームの中身を確認してみましょう。
A店の値が元の値のままになっています。
assignメソッドでは元の変数の値は上書きされないためです。

df01 = df.assign(D店='lemon')
df01

次に、新しい列を追加してみましょう。
df.assignで引数に新しい列名と値を指定し、変数に格納します。
実行します。
D店を追加することができました。

df02 = df.assign(D店=['banana', 'apple', 'peach', 'banana', 'peach'], point=[200, 300, 270, 320, 350])
df02

最後に、同時に複数の列を追加してみましょう。
列名とそれぞれの値をリストにして指定し、変数に格納します。
実行します。
D店とpointの列を追加できました。
なお、似たメソッドに同じくPandasライブラリのinsertメソッドがあります。
2つのメソッドの違いは、insertメソッドでは列を追加する場所を指定できますが、assignメソッドでは常に右端に列が追加される点です。
また、値を上書きした場合、insertメソッドでは元の値に上書きしますが、assignメソッドでは元の値はそのままで、新しいデータフレームが作成されます。

関連メソッド

【毎日Python】Pythonでデータフレームの任意の位置に列を追加する方法|pandas.DataFrame.insert