1. ホーム
  2. パイソン

[解決済み】複数の引数を持つ関数を適用して、新しいpandasカラムを作成する。

2022-04-08 12:26:09

質問

に新しいカラムを作りたいのですが、どうすればいいですか? pandas データフレームは、既存の 2 つの列に関数を適用することで作成されます。以下はその例です。 回答 引数として1列だけ必要な時に、新しい列を作ることができました。

import pandas as pd
df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})

def fx(x):
    return x * x

print(df)
df['newcolumn'] = df.A.apply(fx)
print(df)

しかし、関数が複数の引数を必要とする場合、同じことを行う方法がわかりません。例えば、以下の関数にA列とB列を渡して新しい列を作成するにはどうしたらよいでしょうか?

def fxy(x, y):
    return x * y

解決方法は?

または、numpy の基礎となる関数を使用することもできます。

>>> import numpy as np
>>> df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})
>>> df['new_column'] = np.multiply(df['A'], df['B'])
>>> df
    A   B  new_column
0  10  20         200
1  20  30         600
2  30  10         300

または任意の関数をベクトル化する一般的なケース。

>>> def fx(x, y):
...     return x*y
...
>>> df['new_column'] = np.vectorize(fx)(df['A'], df['B'])
>>> df
    A   B  new_column
0  10  20         200
1  20  30         600
2  30  10         300