Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply function to multiple pandas dataframe

I have multiple dataframes:

df1, df2, df3,..., dfn

They have the same type of data but from different groups of descriptors that cannot be joined. Now I need to apply the same function to each dataframe manually.

How can I apply the same function to multiple dataframes?

like image 683
Naravut Suvannang Avatar asked Jul 07 '16 10:07

Naravut Suvannang


2 Answers

pipe + comprehension

If your dataframes contain related data, as in this case, you should store them in a list (if numeric ordering is sufficient) or dict (if you need to provide custom labels to each dataframe). Then you can pipe each dataframe through a function foo via a comprehension.

List example

df_list = [df1, df2, df3]
df_list = [df.pipe(foo) for df in df_list]

Then access your dataframes via df_list[0], df_list[1], etc.

Dictionary example

df_dict = {'first': df1, 'second': df2, 'third': df3}
df_dict = {k: v.pipe(foo) for k, v in df_dict.items()}

Then access your dataframes via df_dict['first], df_dict['second'], etc.

like image 138
jpp Avatar answered Nov 14 '22 05:11

jpp


If the data frames have the same columns you could concat them to a single data frame, but otherwise there is not really a "smart" way of doing it:

df1, df2, df3 = (df.apply(...) for df in [df1, df2, df3]) # or either .map or .applymap
like image 24
DeepSpace Avatar answered Nov 14 '22 07:11

DeepSpace