2016-12-16 2 views
3

У меня есть dataframe вроде этого:Как .value_count() строки, принимая во внимание другие столбцы?

date post 
    da1  a 
    da1  b 
    da2  a 
    da3  c 
    da1  d 
    da1  a 

То, что я хочу сделать это:

date post total 
    da1 a  2 
    da1 b  1 
    da2 a  1 
    da3 c  1 
    da1 d  1 

Я пробовал:

df.groupby(["date","post"]).count().sort_values(['index'], ascending=0) 

И сортирует его в таком порядке , но я не могу получить доступ к значениям даты/сообщения через: df.date или df.post больше поскольку все даты/должности становятся их собственными «ключами» к общим значениям.

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

+2

вызова 'reset_index()' на результат:. 'Df.groupby ([ "Дата", "сообщение"]) рассчитывать(). sort_values ​​(['index'], ascending = 0) .result_index() ' – EdChum

ответ

3

Я думаю, что вам нужно:

print (df.groupby(["date","post"]).size().reset_index(name='total')) 
    date post total 
0 da1 a  2 
1 da1 b  1 
2 da1 d  1 
3 da2 a  1 
4 da3 c  1 

What is the difference between size and count in pandas?

+2

вам даже нужно' sort_index() '? –

+1

@RomanPekar - нет, потому что 'groupby' сортирует значения. Спасибо. – jezrael

+0

omg это помогло! Спасибо! – raph

Смежные вопросы