Как подсчитать все положительные и отрицательные значения в группе панд?

Предположим, у нас есть таблица:

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)}) 

Вывод:

  ABCD 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 

Я хочу подсчитать, сколько положительных и отрицательных чисел в столбце C принадлежит каждой группе в столбце A и в какой пропорции. В A гораздо больше групп, чем foo и bar, поэтому имена групп не должны быть в коде.

Я пытался группировать А, а затем фильтровать, но не нашел правильный путь. Также пытался объединиться с какой-то умной лямбдой, но не получилось.

One Solution collect form web for “Как подсчитать все положительные и отрицательные значения в группе панд?”

Вы можете сделать это, когда применяется одна линия (первый столбец отрицательный, второй положительный):

 In [11]: df.groupby('A').C.apply(lambda x: pd.Series([(x < 0).sum(), (x >= 0).sum()])).unstack() Out[111]: 0 1 A bar 2 1 foo 2 3 [2 rows x 2 columns] 

Однако я считаю, что более простой способ – использовать фиктивный столбец и использовать value_counts :

 In [21]: df['C_sign'] = np.sign(df.C) In [22]: df.groupby('A').C_sign.value_counts() Out[22]: A bar -1 2 1 1 foo 1 3 -1 2 dtype: int64 In [23]: df.groupby('A').C_sign.value_counts().unstack() Out[23]: -1 1 A bar 2 1 foo 2 3 [2 rows x 2 columns] 
  • Мне нужно создать объект списка python или любой объект из объекта pandas DataFrame, группирующего фрагменты значений из разных строк
  • HTML-код для отображения разбитого data_frame на одной странице html с использованием python
  • Сравнение двух данных и получение различий
  • Pandon pandas: как запустить множественную одномерную регрессию по группам
  • Панды применяются с общей суммой во втором столбце
  • Конвертировать поплавки в ints в Pandas?
  • Как отформатировать отображение IPython html в виде кадра данных Pandas?
  • Как перевести этот формат json в правильный формат, который можно использовать pandas read_json ()
  •  
    Interesting Posts for Van-Lav

    Невозможно получить доступ к значению глобальной переменной в других функциях, кроме инициализированных

    Переназначение конечного слоя InceptionV4 для новых категорий: локальная переменная не инициализирована

    Фильтровать список словарей

    Ошибка при импорте процессора запросов Django

    пустой словарь как значение по умолчанию для аргумента ключевого слова в функции python: словарь, кажется, не инициализируется {} при последующих вызовах?

    Ошибка Bad Request с флягой, python, HTML, необычное поведение инициализации с flask.request.form

    ggsave () в ggplot для python, не сохраняющего

    Показать список с колонками с помощью Tkinter?

    Сельдерей: обратный вызов после иерархии задач

    проверка JSON из командной строки с использованием `python -m jsontool` дает« Нет объекта JSON, который может быть декодирован »

    Запросы аутентификации и python

    Получить pid рекурсивных подпроцессов

    Python: переключение на один словарь и создание пар ключ / значение в новом словаре, если условия встречаются

    Как я могу векторизовать список, используя sklearn DictVectorizer

    Python: удалить деление после запятой

    Python - лучший язык программирования в мире.