Получить сумму некоторых строк pd.DataFrame - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть pandas dataframe, как показано ниже, и я хотел бы вычислить сумму некоторых строк.Я хочу рассчитать следующим образом:

Я хочу получить сумму строк в столбце 1 из «Стекла» в «Таблицы», а затем сумму строк в столбце 1 из «Таблицы» в другое, потому что стеклов таблицу входит одна категория, а есть и другие категории.

Поскольку у меня есть несколько таких листов, и для каждого я не знаю, сколько элементов в каждой категории, поэтому я не могу суммировать строки, вызывая индекс строки.

Может ли кто-нибудь помочь мне с этим?

                          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

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Вы можете использовать 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
0 голосов
/ 30 ноября 2018

Это то, что вы могли бы сделать

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
0 голосов
/ 29 ноября 2018

При условии, что заказ уже правильный:

df.set_index(0)['Glass':'Tables'].sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...