Используйте filter
с div
для разделения и объединения вместе concat
:
df = pd.concat([df.filter(like='v').div(df['t1'], axis=0),
df.filter(like='x').div(df['t2'], axis=0)], axis=1)
print (df)
v1 v2 x1 x2
0 0.500000 0.500000 0.727273 0.272727
1 0.307692 0.692308 0.666667 0.333333
2 0.500000 0.500000 0.727273 0.272727
Если хотитетакже общее количество столбцов:
df = pd.concat([df.filter(like='v').div(df['t1'], axis=0),
df.filter(like='x').div(df['t2'], axis=0),
df[['t1','t2']]], axis=1)
print (df)
v1 v2 x1 x2 t1 t2
0 0.500000 0.500000 0.727273 0.272727 10 11
1 0.307692 0.692308 0.666667 0.333333 13 3
2 0.500000 0.500000 0.727273 0.272727 20 11