我有一个如下所示的pandas数据框,我想计算一些行的总和。我想这样计算:
我想从“ Glass”到“ Tables”获取第一列的总和,然后从“ Tables”到其他内容获取column1的总和,因为玻璃到桌子是一个类别,还有其他类别
因为我有几个工作表,而且对于每个工作表我都不知道每个类别下有多少个项目,所以我无法通过调用行索引来对行求和。
有人可以帮我吗?
0 1
0 Glass 26,990
1 Fabrics 30,853
2 Furniture & Accessories 136,022
3 Tables 132,454
4 Cabinet/Door Hardware 4,872
6 Fences 5,952
7 Glass Doors 12,571
答案 0 :(得分:1)
假设订单已经正确:
df.set_index(0)['Glass':'Tables'].sum()
答案 1 :(得分:0)
您可以使用pd.concat()
,前提是您的类别是以类似的方式定义的:
categories = [('Glass','Tables'), ('Tables','Glass Doors')]
pd.concat([df.set_index(0)[c[0]:c[1]].sum() for c in categories], keys=categories)
返回:
Glass Tables 1 326319
Tables Glass Doors 1 155849
答案 2 :(得分:0)
这就是你可能要做的
import pandas as pd
categories = {'Glass': 'Category 1', 'Fabrics': 'Category 1',
'Furniture & Accessories': 'Category 1',
'Tables': 'Category 2', 'Cabinet/Door Hardware': 'Category 2',
'Fences': 'Category 3', 'Glass Doors': 'Category 4'}
df = pd.read_csv('rfile1.csv', converters={0: lambda x: categories[x]})
df
0 1
0 Category 1 26990
1 Category 1 30853
2 Category 1 136022
3 Category 2 132454
4 Category 2 4872
5 Category 3 5952
6 Category 4 12571
df.groupby('0').sum()
sum
0
Category 1 193865
Category 2 137326
Category 3 5952
Category 4 12571