Я решил это, но я верю неэффективно!
Я создал новый фрейм данных
df2 = df[['Col1','Col2','Co3','Percentgage']]
Создан новый столбец в df2, который является зеркалом столбца 1 (т.е. если 2 = 5, если 5 = 2)
df2['opposite_col1'] = np.where(df2['Col1']==2,5,2)
Убрал исходный столбец 1 и переименовал новый столбец в столбец 1
df2.drop('Col1',axis=1)
df2.columns = ['Col2,'Col3','Mirror_Percentgage','Col1']
Это выглядит следующим образом (примечание, идентично таблице 1, за исключением того, что столбец col1 зеркально отражен).
Col1 Col2 Col3 Mirror_Percentage
5 A X 5%
5 B Y 4%
5 C Z 3%
2 A X 2%
2 B Y 1%
2 C Z 5%
Затем просто объедините df с df2 на Col1, Col2, Col3 - это оставляет нам исходную таблицу, за исключением дополнительного столбца «Mirror_Percentgage».
Затем я создаю новый столбец, который находит поле:
df['Mirror_margin'] = df['Percentgage'] - df['Mirror_Percentgage']