Давайте предположим, что у нас есть таблица:Как считать все положительные и отрицательные значения в группе pandas?
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C' : np.random.randn(8), 'D' : np.random.randn(8)})
Выход:
A B C D
0 foo one -1.304026 0.237045
1 bar one 0.030488 -0.672931
2 foo two 0.530976 -0.669559
3 bar three -0.004624 -1.604039
4 foo two -0.247809 -1.571291
5 bar two -0.570580 1.454514
6 foo one 1.441081 0.096880
7 foo three 0.296377 1.575791
Я хочу, чтобы подсчитать, сколько положительных и отрицательных чисел в столбце С принадлежат каждой группе в колонке А и в какой пропорции. В A гораздо больше групп, чем foo и bar, поэтому имена групп не должны быть в коде.
Я пытался группировать A, а затем фильтровать, но не нашел правильный путь. Также пытался объединиться с какой-то умной лямбдой, но не получилось.
Я думаю, что предпочитаю 'df [" C_sign "] = np.sign (df.C)'. – DSM
@ DSM согласился, это намного лучше –