Я пытаюсь выполнить действие с сгруппированными данными в Pandas.Для каждой группы, основанной на переменных «atable» и «column», я хочу пройтись по строкам и посмотреть, равна ли сумма значений для переменной «value» для include «Да» равна сумме значений для переменной «value» для Include »Нет ", только если для параметра" Включить "заданы значения" Да "и" Нет "для этой группы.Если условия не выполняются, то я хочу распечатать ошибку с подробностями строки.Мои данные выглядят так:
df1 = pd.DataFrame({
'atable':['Users','Users','Users','Users','Locks'],
'column':['col_1','col_1','col_1','col_a','col'],
'Include':['No','Yes','Yes','Yes','Yes'],
'value':[3,2,1,1,1],
})
df1
Include atable column value
0 No Users col_1 3
1 Yes Users col_1 2
2 Yes Users col_1 1
3 Yes Users col_a 1
4 Yes Locks col 1
Я пробовал приведенный ниже код, но он также выдает ошибки для строк, в которых нет ни «Да», ни «Нет» в столбце «Включить», как показано ниже:
grouped = df1.groupby(["atable", "column"])
for index, rows in grouped:
if (([rows['Include'].isin(["Yes", "No"])])) and (rows[rows['Include'] == 'Yes']['value'].sum() != rows[rows['Include'] == 'No']["value"].sum()):
print("error", index)
Output:
error ('Locks', 'col')
error ('Users', 'col_a')
Я не хочу, чтобы мой код выдавал ошибку даже для индексов 3 и 4, поскольку в этих строках просто есть «Да» в столбце «Включить».