Перебирайте сгруппированный массив данных pandas и выполняйте некоторые операции - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь выполнить действие с сгруппированными данными в 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, поскольку в этих строках просто есть «Да» в столбце «Включить».

1 Ответ

0 голосов
/ 12 февраля 2019

Это сработало:

grouped = df2.groupby(["atable", "column"])
for index, rows in grouped:
    if (rows[rows['Include'] == 'Yes']['value'].sum() != rows[rows['Include'] == 'No']["value"].sum()) and (rows[rows['Include'] == 'Yes']['value'].sum() != 0)  and (rows[rows['Include'] == 'No']['value'].sum() != 0):
        print("error", index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...