如果我想将值/列之和到某个时间段,如何使用pivot表进行聚合?例如,在下表中,如果我想要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年代、500年代、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提前感谢!
发布于 2018-10-15 15:02:37
这可能会有帮助。将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编辑
如果您想将年份按不同的数量分组,比方说每两年一次,只需更改年份组:
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 7https://stackoverflow.com/questions/52787453
复制相似问题