我有以下数据(以csv格式):
Country,City,Year,Value1,Value2
Germany,Berlin,2020,9,3
Germany,Berlin,2017,1,4
Germany,Berlin,2011,1,4
Israel,Tel Aviv, 2007,4.5,1
我想根据Year
列创建bin,以便代替5年,而不是使用特定年份,然后对Value1
,{ {1}},按Value2
,Country
和垃圾箱ID分组(在下面的示例中,我将此称为City
)。
例如,运行此过程后,数据将如下所示:
YearRange
如果这简化了操作,那么我不介意提前创建可能的范围(即,我将拥有一个表,其中包含所有可能的范围:2016-2020年,2011-2015年,2006-2010年),直到我最早的日期为止数据)。
如何使用Pandas实现这一目标?
谢谢!
答案 0 :(得分:4)
将pd.cut
与groupby
一起使用
df.groupby([df.Country,df.City,pd.cut(df.Year,[2006,2011,2016,2020]).astype(str)])[['Value1','Value2']].sum().reset_index()
Out[254]:
Country City Year Value1 Value2
0 Germany Berlin (2006, 2011] 1.0 4
1 Germany Berlin (2016, 2020] 10.0 7
2 Israel Tel Aviv (2006, 2011] 4.5 1