2015-03-09 4 views
0
dictionary = {'Year': [1985, 1985, 1986, 1986, 1987, 1987, 1987]} 
pdf = pd.DataFrame(dictionary) 

    Year 
0 1985 
1 1985 
2 1986 
3 1986 
4 1987 
5 1987 
6 1987 

У меня есть dataframe под названием pdf Мне нужно сформировать в следующем формате с new data frame:подсчета значений столбцов в панд

Year count 
1985  2 
1986  2 
1987  3 

Как сделать это эффективно в панд?

ответ

2

Вот ответ:

dictionary = {'Year': [1985, 1985, 1986, 1986, 1987, 1987, 1987]} 
pdf = pd.DataFrame(dictionary) 
gb = pdf.groupby('Year')['Year'].count() 
1

Counter счетчик инструмент, предоставляемый для поддержки удобные и быстрые бирки словарей и других hashable объектов.

from collections import Counter 

df = pd.DataFrame(Counter(pd.DataFrame(dictionary).Year).items(), 
        columns=['Year', 'Count']) 

>>> print df 
print(df) 
    Year Count 
0 1985  2 
1 1986  2 
2 1987  3 

%timeit pd.DataFrame(dictionary).groupby('Year')['Year'].count() 
1000 loops, best of 3: 777 µs per loop 

%timeit pd.DataFrame(Counter(pd.DataFrame(dictionary).Year).items(), columns=['Year', 'Count']) 
1000 loops, best of 3: 672 µs per loop 
1

Самый простой способ сделать это

pdf['Year'].value_counts() 

Это возвращает серию.