次のような適用関数を使用したいと思います。-2つの列を入力として受け取ります-関数に基づいて2つの新しい列を出力します。
例は、このadd_multiply関数です。
#function with 2 column inputs and 2 outputs
def add_multiply (a,b):
return (a+b, a*b )
#example dataframe
df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
#this doesn't work
df[['add', 'multiply']] = df.apply(lambda x: add_multiply(x['col1'], x['col2']), axis=1)
理想的な結果:
col1 col2 add multiply
1 3 4 3
2 4 6 8
あなたは付け加えられます result_type='expand'
in apply
:
「展開」:リストのような結果が列に変換されます。
df[['add', 'multiply']]=df.apply(lambda x: add_multiply(x['col1'], x['col2']),axis=1,
result_type='expand')
または、データフレームコンストラクタを呼び出します。
df[['add', 'multiply']]=pd.DataFrame(df.apply(lambda x: add_multiply(x['col1'],
x['col2']), axis=1).tolist())
col1 col2 add multiply
0 1 3 4 3
1 2 4 6 8
anky_91の回答は、apply
の便利なオプションを強調しています。
ただし、この特定のケースでは、apply
は必須ではありません。
df['add'], df['multiply'] = add_multiply(df['col1'],df['col2'])