Панды удаляют группы, каждый элемент которых имеет одинаковое значение в столбце каждой группы. - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно сделать groupby для df, а затем в каждой группе я хочу проверить, имеет ли каждый элемент в этой группе одинаковое значение в столбце A, если это так, удалить группу

 df['cluster_id'] = df.groupby(['B', 'C', 'D'])['B'].transform('size')

 df = df.loc[
        df['cluster_id'] > 1 &
        df['cluster_id'] == df['cluster_id'] &
        df['A'] != df['A']]

но я получил ошибку

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Мне интересно, как это исправить.

1 Ответ

0 голосов
/ 10 мая 2018

Я думаю () пропущено:

df =df[(df['cluster_id'] > 1) & (df['cluster_id'] == df['cluster_id']) & (df['A'] != df['A'])]

Также кажется, что второе условие не является необходимым:

df = df[(df['cluster_id'] > 1) & (df['A'] != df['A'])]

Также новый столбец не нужен, можно сравнить по Series:

cluster_id = df.groupby(['B', 'C', 'D'])['B'].transform('size')

df = df[(cluster_id > 1) & (cluster_id == cluster_id) & (df['A'] != df['A'])]

df = df[(cluster_id > 1) & (df['A'] != df['A'])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...