筛选数据透视表列中的值

时间:2018-10-12 21:55:40

标签: python pandas

如果我想在特定时间段内汇总值/汇总一列,该如何使用数据透视表来实现?例如,在下表中,如果我想要2000年-2001年和2002年-2004年之间的水果总和,我应该写什么代码?目前为止我有这个:

import pandas as pd
import numpy as np


UG = pd.read_csv('fruitslist.csv', index_col=2)
UG = UG.pivot_table(values = 'Count', index = 'Fruits', columns = 'Year', aggfunc=np.sum)
UG.to_csv('fruits.csv')

此返回值按每年的每种水果计数,但我似乎无法按十年(例如90年代,00年代,2010年代)进行汇总

Fruits    Count   Year

Apple     4       1995

Orange    5       1996

Orange    6       2001

Guava     8       2003

Banana    6       2010

Guava     8       2011

Peach     7       2012

Guava     9       2013

谢谢!

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助。将Year中的groupby列转换为数十年,然后进行汇总。

"""
Fruits    Count   Year

Apple     4       1995

Orange    5       1996

Orange    6       2001

Guava     8       2003

Banana    6       2010

Guava     8       2011

Peach     7       2012

Guava     9       2013
"""

df = pd.read_clipboard()

output = df.groupby([
    df.Year//10*10,
    'Fruits'
]).agg({
    'Count' : 'sum'
})

print(output)

             Count
Year Fruits       
1990 Apple       4
     Orange      5
2000 Guava       8
     Orange      6
2010 Banana      6
     Guava      17
     Peach       7

编辑

如果您想按不同的年份对年份进行分组,比如说每2年,只需更改年份组即可:

print(df.groupby([
    df.Year//2*2,
    'Fruits'
]).agg({
    'Count' : 'sum'
}))

             Count
Year Fruits       
1994 Apple       4
1996 Orange      5
2000 Orange      6
2002 Guava       8
2010 Banana      6
     Guava       8
2012 Guava       9
     Peach       7