Home > Software engineering >  have two variable list and hoping to work on some calculation of the two list
have two variable list and hoping to work on some calculation of the two list

Time:06-02

I am hoping to create few new columns for 'data'. The first created col is a/d, second b/e, and third c/f.

col1 is a list of names for the original columns The output of df should look like this

a  b  c  d  e  f  res_a  res_c  res_e
1  2  3  4  2  3  0.5    0.75   2/3

res_a is a divide b a = 1, b = 2, therefore res_a = 1/2 = 0.5 c/d c = 3, d= 4 res_c = 3/4 = 0.75

my code looks like this now, but I can't get a/b, c/d, and e/f

col1 = ['a', 'b', 'c']
col2 = ['d', 'e', 'f']
for col in cols2:
    data[f'res_{col}'] = np.round(data[col1]/ data[col2],decimals=2)

CodePudding user response:

You could also use the pandas.IndexSlice to pick up alternate columns with a list slicing type of syntax

cix = pd.IndexSlice
df[['res_a', 'res_c', 'res_e']] = np.divide(df.loc[:, cix['a'::2]], df.loc[:, cix['b'::2]])
print(df)

#    a  b  c  d  e  f  res_a  res_c     res_e
# 0  1  2  3  4  2  3    0.5   0.75  0.666667

You can read more about the pandas slicers enter image description here

CodePudding user response:

Use zip() to loop over two lists in parallel.

cols1 = ['a', 'c', 'e']
cols2 = ['b', 'd', 'f']
for c1, c2 in zip(cols1, cols2):
    data[f'res_{c1}'] = np.round(data[c1] / data[c2], decimals=2)
  • Related