计算pandas中的列值

时间:2015-03-09 00:25:09

标签: python python-2.7 pandas

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

我有一个名为pdf的数据框我需要按以下格式组建new data frame

Year   count
1985     2
1986     2 
1987     3

如何在熊猫中有效地做到这一点?

3 个答案:

答案 0 :(得分:2)

以下是答案:

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

答案 1 :(得分:2)

最简单的方法是

pdf['Year'].value_counts()

这会返回一个系列。

答案 2 :(得分:1)

Counter是一个反制工具,用于支持词典和其他可清洗对象的方便快捷的记录。

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