Я хотел бы создать в столбце, который создает значение на основе оператора if между значениями в той же строке и, если необходимо, в строках выше.У меня есть константа A и df
A = 0.5
FID_1 b c d e
75907 nan 33021647.00 27014.12 27014.12 1.00
75858 159510.00 32888862.00 16532.64 28797.05 0.57
75859 159510.00 32888862.00 12264.41 28797.05 0.43
75795 nan 32869718.00 24218.16 24218.16 1.00
75518 nan 32574894.00 13304.45 13304.45 1.00
Я хотел бы создать еще один столбец с именем f
, который будет сообщать мне, если значение в e
больше, чем A или нет для данногозначение в b
.Если это правильно, то значение равно 1.
Пример для вышеупомянутого df:
FID_1 b c d e f
75907 nan 33021647.00 27014.12 27014.12 1.00 1
75858 159510.00 32888862.00 16532.64 28797.05 0.57 1
75859 159510.00 32888862.00 12264.41 28797.05 0.43 0
75795 nan 32869718.00 24218.16 24218.16 1.00 1
75518 nan 32574894.00 13304.45 13304.45 1.00 1
Что будет сложнее, если я изменю значение A
на 0.6
.В этом случае я хотел бы видеть для каждого числа в b
, если первая строка значения в b
имеет значение в e
больше, чем A
, и если нет, я бы хотелсм. для второй строки того же значения sum
значений в e
и проверьте, больше ли оно, чем A. df
с A=0.6
выглядит следующим образом:
FID_1 b c d e f
75907 nan 33021647.00 27014.12 27014.12 1.00 1
75858 159510.00 32888862.00 16532.64 28797.05 0.57 0
75859 159510.00 32888862.00 12264.41 28797.05 0.43 1
75795 nan 32869718.00 24218.16 24218.16 1.00 1
75518 nan 32574894.00 13304.45 13304.45 1.00 1
Inв этом случае код суммирует 0,57 и 0,43 в третьей строке df.
Если это не так, код будет искать третью, четвертую, ... строку того же значения вb
- если он вообще существует.
Это код для создания e
столбца
df['e'] = df.apply(lambda row: row.c / row.d, axis=1)
Я пробовал подобное для столбца f
, но я не знаюкак ввести if statement
в тот же код.
Это начало моего решения:
def STAcondition (row):
if row['e'] > A :
return 0
if row['e'] < A :
return 1
return 'Other'
df['f'] = df.apply (lambda row: STAcondition (row),axis=1)