Applying function with multiple arguments to create a new pandas column

I want to create a new column in a pandas data frame by applying a function to two existing columns. Following this answer I've been able to create a new column when I only need one column as an argument:

    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)

However, I cannot figure out how to do the same thing when the function requires multiple arguments. For example, how do I create a new column by passing column A and column B to the function below?

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

Alternatively, you can use numpy underlying function:

    >>> 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

or vectorize arbitrary function in general case:

    >>> 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

From: stackoverflow.com/q/19914937

Back to homepage or read more recommendations: