Pandas: Run a set of codes for multiple parameters with multiple levels of each parameter (output is a dataframe)

Issue

Lets say we have a set of codes as given below. Currently, we have two parameters whose value are initialized by user input. The output here is a dataframe.

What we want?

Use a function, to create a dataframe with all combinations of X and Y. Lets say X and Y has 4 input values each. Then

Join the output dataframe, df for each combination to get the desired output dataframe.

X= float(input("Enter the value of X: "))
Y = float(input("Enter the value of Y: "))
A= X*Y
B=X*(Y^2)
df = pd.DataFrame({"X": X, "Y": Y, "A": A, "B": B})

Desired output

X   Y   A   B
1   2   2   4
1   4   4   16
1   6   6   36
1   8   8   64
2   2   4   8
2   4   8   32
2   6   12  72
2   8   16  128
3   2   6   12
3   4   12  48
3   6   18  108
3   8   24  192
4   2   8   16
4   4   16  64
4   6   24  144
4   8   32  256

Solution

Is this what you were looking for?

def so_help():
    x = input('Please enter all X values separated by a comma(,)')
    y = input('Please enter all Y values separated by a comma(,)')
    #In case anyone gets comma happy
    x = x.strip(',')
    y = y.strip(',')
    x_list = x.split(',')
    y_list = y.split(',')
    
    df_x = pd.DataFrame({'X' : x_list})
    df_y = pd.DataFrame({'Y' : y_list})
    df_cross = pd.merge(df_x, df_y, how = 'cross')
    
    df_cross['X'] = df_cross['X'].astype(int)
    df_cross['Y'] = df_cross['Y'].astype(int)
    df_cross['A'] = df_cross['X'].mul(df_cross['Y'])
    df_cross['B'] = df_cross['X'].mul(df_cross['Y'].pow(2))
    return df_cross
    
so_help()

Answered By – ArchAngelPwn

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published