假设Pandas DataFrame如下所示:
Year Bread Amount
-----------------------------
2008S1 white 50
2008S1 brown 30
2008S2 white 60
2008S2 brown 90
2009S1 brown 100
2009S1 golden 2000
2009S2 brown 20
2009S2 golden 1000
我希望加入相关的年份/面包组合,以便将金额加在一起。可以假设每年+面包组合都是独一无二的。结果将变为:
Year Bread Amount
-----------------------------
2008 white 110
2008 brown 120
2009 brown 120
2009 golden 3000
这样做的好方法是什么?我想过使用布尔索引来拼接包含 yearS2 和 bread 的行(删除行并提取值)。然后通过布尔索引再次查找相关行( yearS1 和相同的 bread ),以执行添加。这听起来像我认为可以更优雅地处理的许多工作。
答案 0 :(得分:4)
您可以使用groupby。分组将在Year列的前4个字符和Bread列中完成,如下所示:
df.groupby([df['Year'].str[:4], 'Bread']).sum()
Out:
Amount
Year Bread
2008 brown 120
white 110
2009 brown 120
golden 3000
或者作为常规列:
df.groupby([df['Year'].str[:4], 'Bread'], as_index=False).sum()
Out:
Bread Amount
0 brown 120
1 white 110
2 brown 120
3 golden 3000
答案 1 :(得分:-1)
假设您的DataFrame位于df
df.groupby(['year','bread'])['amount'].sum().reset_index()