简体   繁体   中英

Filtering for values in Pivot table columns

If I wanted to aggregate values/sum a column by a certain time period, how do I do it using the pivot table? For example in the table below, if I want the aggregate sum of fruits between 2000 - 2001, and 2002 - 2004, what code would I write? Currently I have this so far:

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')

This returns counts for each fruit by each individual year, but I can't seem to aggregate by decade (eg 90s, 00s, 2010s)

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

Thanks in advance!

This might help. Convert the Year column within a groupby to decades and then aggregate.

"""
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

Edit

If you want to group the years by a different amount, say every 2 years, just change the Year group:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM