熊猫:Bin和Sum

时间:2018-07-09 16:56:09

标签: python pandas

我有以下数据(以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}},按Value2Country和垃圾箱ID分组(在下面的示例中,我将此称为City)。

例如,运行此过程后,数据将如下所示:

YearRange

如果这简化了操作,那么我不介意提前创建可能的范围(即,我将拥有一个表,其中包含所有可能的范围:2016-2020年,2011-2015年,2006-2010年),直到我最早的日期为止数据)。

如何使用Pandas实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:4)

pd.cutgroupby一起使用

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