nipy
nipy

Reputation: 5488

Pass multiple variables to a function when using pandas.DataFrame.assign

Overview

I'm using pandas.DataFrame.assign to create a new column using a function in a similar way to this:

def find_break(x):

    date_is_before = df.index < datetime.now()
    under_price = df.Low < (x["Cluster Min"] - false_break)
    all_are_true = date_is_before & under_price
    if (all_are_true).any():
        return df[all_are_true].index[0]


dfClustersSupport = dfClusters.assign(
                    support_broken=dfClusters.apply(find_break, 1))

I want to now pass the thresh variable as follows:

def find_break(x, thresh ):

    false_break = thresh / 2

    date_is_before = df.index < datetime.now()
    under_price = df.Low < (x["Cluster Min"] - false_break)
    all_are_true = date_is_before & under_price
    if (all_are_true).any():
        return df[all_are_true].index[0]

Question

How do I pass the thresh variable when I apply the function here?

dfClustersSupport = dfClusters.assign(
                    support_broken=dfClusters.apply(find_break, 1))

Upvotes: 1

Views: 256

Answers (1)

jezrael
jezrael

Reputation: 862921

Add kwargs parameter to DataFrame.apply:

dfClustersSupport = dfClusters.assign(
                     support_broken=dfClusters.apply(find_break, thresh=10, axis=1))

Upvotes: 1

Related Questions