如果我想按特定时间段聚合值/对列求和,如何使用数据透视表来实现?例如,在下表中,如果我想要 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
提前致谢!
最佳答案
这可能会有所帮助。将 groupby
中的 Year
列转换为十年,然后聚合。
"""
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
关于python - 过滤数据透视表列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787453/