Вот проблема: у меня есть следующие данные:панды кадр данных: Как отфильтровать на колонке, а затем построить количество и сумму других столбцов
df = pandas.DataFrame({'A': [10, 10, 20, 20, 30, 20, 10, 20, 30, 30],
'B': [1001, 1002, 2002, 2003, 3001, 2003, 1002, 2003, 3005, 3005],
'C': numpy.random.randn(10),
'D': numpy.random.randn(10)})
При этом применяются:
df.groupby('A').agg({'B': max, 'C': numpy.count_nonzero})
я получаю:
C B
A
10 3 1002
20 4 2003
30 3 3005
Но я хочу только подсчет C, когда она является частью максимального значения B (сгруппированных по A). Я узнал в предыдущем посте, что группировка не может быть сделана, как это - до сих пор нет счетчика C:
df.groupby('A')['B'].max()
Это дает мне максимум B для каждого А.
A
10 1002
20 2003
30 3005
Name: B, dtype: int64
Я с отсутствующим последний шаг, чтобы получить этот результат:
A B C
10 1002 2 # 2, because there are 2 rows of B = 1002 with A = 10
20 2003 3
30 3005 2
в моем проекте я не знаю значения B заранее, поэтому я не могу настроить фильтр заранее.
Спасибо. Я никогда бы не нашел это решение – Michael