PandasにおけるDataFrameの複数の列に関数を適用してみます。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■DataFrameを作成する
DataFrameの複数の列に関数を適用する前に、DataFrameを作成します。
■コード
import pandas as pd data = { '名前1':['佐藤','吉田','松岡','朝永','永野'], '名前2':['佐々木','成田','岡本','須賀','藤丘'], } df = pd.DataFrame(data) print(df)
インポートでPandasモジュールを呼び出します。dataという変数を作成し、その中に「名前1」、「名前2」の2つの列を格納します。
格納後、dfという変数を作成し、pd.DataFrame()と記述し、DataFrameを作成。作成後、dfという変数に格納します。
■実行
このスクリプトを実行すると、作成したDataFrameが出力されます。
■DataFrameの複数の列に関数を適用する
DataFrameの用意ができましたので、DataFrameの複数の列に関数を適用するスクリプトを書いていきます。
■コード
import pandas as pd data = { '名前1':['佐藤','吉田','松岡','朝永','永野'], '名前2':['佐々木','成田','岡本','須賀','藤丘'], } df = pd.DataFrame(data) def add_to(name): return 'A高校: ' + name df[["名前1",'名前2']] = df[["名前1",'名前2']].apply(add_to) print(df)
DataFrameの複数の列に関数を適用する場合は、dfという変数を作成し、pd.DataFrame()と記述し、DataFrameを作成。その後に、def文を用いて関数(function)を定義します。
今回は作成したDataFrameの列の値(文字列)の前に「A高校: 」という文字列を付加するというadd_toという関数を定義しました。
定義した後は、作成したDataFrameの2つの列の値に対して、apply()関数を使用します。括弧内には作成した関数の名前を記述します。これで関数を適用することができます。
最後に関数を適用された後のDataFrameの情報をprint関数で出力してみます。
■実行
このスクリプトを「df_func_2.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、作成したDataFrameの2つの列の値に対して関数が適応され文字列が付加されて出力されました。
■DataFrameの列の値が数値の場合に関数を適応する
次に、DataFrameの列の値が”数値”の場合に関数を適応してみます。
■コード
import pandas as pd data = { 'Number1':[10,15,20,25,30], 'Number2':[100,200,300,400,500], } df = pd.DataFrame(data) def add_n(number): return 2 * number df[["Number1",'Number2']] = df[["Number1",'Number2']].apply(add_n) print(df)
今回は、DataFrameの2つの列の値を数値に変更しました。変更後、def文を用いて関数(function)を定義します。定義した関数は、DataFrameの列の値に「2」をかける(乗法)というものです。
■実行
このスクリプトを「df_func_3.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、定義した関数が適応されて、DataFrameの2つの列の値に「2」をかけた(乗法)ものが出力されました。
コメント