Вы можете получить свои выходные данные, используя numpy, где
Чтобы заново создать ваш фрейм данных, я использовал случайные значения:
df1 = pd.DataFrame(np.random.randint(1, 100, size=(100, 3)))
Изменение его формы в тот же размер, что и у вас:
array1 = df1.to_numpy()
array2 = array1.reshape(10, 10, 3)
Цикл по каждой матрице и использование вложенного numpy, где:
for a in range(len(array2)):
print(np.where(array2[a][:, 0] > array2[a][:, 2],
np.where(array2[a][:, 2] > array2[a][:, 1], "A",
np.where(array2[a][:, 2] == array2[a][:, 1], "C",
np.where(array2[a][:, 2] < array2[a][:, 1], "D", np.nan))), np.nan))
Примечание: np.nan - просто заполнитель в качестве примера.
Выход:
['D' 'nan' 'nan' 'A' 'A' 'D' 'A' 'nan' 'nan' 'nan']
['nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'A' 'A' 'nan']
['nan' 'nan' 'D' 'A' 'D' 'D' 'A' 'C' 'A' 'nan']
['D' 'D' 'D' 'nan' 'A' 'D' 'C' 'D' 'nan' 'D']
['nan' 'D' 'nan' 'A' 'D' 'D' 'nan' 'D' 'nan' 'nan']
['D' 'nan' 'A' 'D' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan']
['nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'nan' 'A' 'A' 'D']
['D' 'nan' 'nan' 'A' 'nan' 'nan' 'nan' 'nan' 'nan' 'D']
['D' 'nan' 'D' 'D' 'nan' 'nan' 'nan' 'nan' 'nan' 'A']
['A' 'D' 'C' 'nan' 'D' 'A' 'nan' 'nan' 'D' 'A']
PS: Это просто распечатка примеров выходных данных. Вы можете создать новый массив тех же размеров, что и исходный массив, и продолжать заменять элементы там, где это необходимо.