У меня есть конкретная и общая проблема, которую я пытаюсь решить.
Конкретная проблема: Я хочу создать новый столбец во фрейме данных, который дает 1, если столбец ifC1 равен 8, а все остальные значения в строке меньше 8. Как логически отрицать все остальные столбцы одновременно?Вот код из моей ошибочной попытки:
df["C1is_8"] = df.apply(lambda row:(row['C1']==8)& ~(row['C1']<8) ,axis=1).astype(int)
Приведенный ниже код создает кадр данных для кода выше.
dict = { 'C1':[4,3,0,0,2,3,4,5,8,8,8,8],
'C2':[8,3,3,7,6,5,3,5,6,8,8,8],
'C3':[2,3,6,4,5,0,0,4,6,7,8,8],
'C4':[8,5,4,4,4,3,2,1,4,2,6,8]
}
columns = ['C1','C2','C3','C4']
Index = [1,2,3,4,5,6,7,8,9,10,11,12]
df = pd.DataFrame(dict,index = Index,columns = columns)
df = OGdf[::-1]
df
Общая проблема: Как мнепереписать некоторую версию приведенного выше кода, чтобы я мог обобщить ее (например, row [i]), чтобы она могла применяться к любому столбцу, а не только к «C1»?