Passing all pandas DataFrame columns to function as separate parameters
Thomas Jollans
tjol at tjol.eu
Fri Apr 27 10:18:24 EDT 2018
On 27/04/18 15:50, zljubisic at gmail.com wrote:
> Hi,
>
> I have pandas DataFrame with several columns. I have to pass all columns as separate parameter to a function.
>
> Something like this if I have 4 columns.
>
> f, p = stats.f_oneway(df_piv.iloc[:, 0], df_piv.iloc[:, 1], df_piv.iloc[:, 2], df_piv.iloc[:, 3])
>
> As number of columns varies, how to do it in the most efficient way?
You could get the DataFrame as a 2d array (df.values) and work from there:
func(*df.values.T)
Of course, this is completely unreadable, and it has another problem: if
your columns have different types, this will cast some or all of your
columns to a different type.
It's probably clearer if you start with the column labels:
func(*(df.loc[:,col] for col in df.columns))
or use df.items():
func(*(values for col, values in df.items()))
-- Thomas
More information about the Python-list
mailing list