Количество панд с использованием нескольких рядов - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть датафрейм df, который содержит 3 столбца: имя, состояние, статус.Данные содержат людей с одинаковыми именами или без них в разных состояниях, а также их состояние сна (проснулся, спит).

  • Столбец «имя» содержит различные имена ... например, «amy»',' brooke ',' tom ',' mike ',' sam '

  • Столбец «Состояние» содержит различные имена состояний

  • Столбец«status» содержит «уснувший» или «проснувшийся»

Я хочу сначала отфильтровать по имени .. поэтому, когда df['name'][1] выводит количество «пробужденных» и «спящих».Будет несколько записей бодрствования и сна, так как в разных состояниях будет несколько ручьев.

Я не совсем понимаю, как можно использовать df['name'][1] для подсчета количества бодрствующих и спящих.

Любое направление будет с благодарностью

1 Ответ

1 голос
/ 24 сентября 2019

Похоже, вы хотите value_counts, который является методом Series.Мы можем сделать groupby по имени и взять значение value_counts в столбце сна, чтобы получить счетчик для каждой группы.Например:

s ='''
    name state sleep
    bob s1 awake
    bob s2 asleep
    bob s3 awake
    rob s1 awake
    rob s2 asleep
    rob s3 awake
    rob s1 asleep
    cindy s2 asleep
    cindy s3 awake
    cindy s1 awake
    cindy s2 asleep
    cindy s1 asleep
    cindy s1 awake
    cindy s2 asleep
    cindy s3 awake
   '''

df = pd.read_csv(io.StringIO(s), sep='\s+')
df = df.groupby('name')['sleep'].value_counts()

name   sleep 
bob    awake     2
       asleep    1
cindy  asleep    4
       awake     4
rob    asleep    2
       awake     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...