cancatenate multiple dfs with same dimensions and apply functions to cell values of all dfs and store result in the cell

Viewed 27
df1 = pd.DataFrame(np.random.randint(0,9,size=(2, 2)))

df2 = pd.DataFrame(np.random.randint(0,9,size=(2, 2)))

Lets say after concatenate df1 and df2(real case I have many dfs with 700*200 size) in a way that I get something like below table(I dont need to see this table, just for explanation)

col a col b
row a [1.4] [7,8]
row b [9,2] [2,0]

Then i want to pass each cell values to below compute function and add the result it from to the cell

def compute(row, column, cell_values):
    baseline_df = [2, 4, 6, 7, 8]
    result = baseline_df
    for values in cell_values:
        if (column-row) != dict[values]:  # dict contain specific values
            result = baseline_df
        else:
            result = result.apply(func, value=values)
            
    return result.loc[column-row]


def func(df, value):
    # operation
    result_df = df*value
    return result_df

What I want is get df1 and df2 , concatenate and apply above function and get the results. In a really fast way. In the actual use case , df quite big and if it run for all cells it would take significant amount of time, i need a faster way to perform this. Note: This is my idea of doing this. I hope you understand what my requirements are. Please let me know if that is not clear.

currently, i am using something like below, just get the max value of the cell and do the calculation(func)later This will just give the max value of all cells combined,

dfs = pd.concat(grid).max(level=0)

Final result should be something like this after calculation(same 2d array with new cell data)

col a col b
row a 0.1 0.7
row b 0.9 0,6

Different approaches are also welcome

0 Answers
Related