Как вы получаете общую сумму столбца за указанную дату? - PullRequest
1 голос
/ 20 сентября 2019

У меня есть где индекс столбца даты.Другие столбцы - это общие продажи каждого продукта за определенный день.Мне нужно получить общий объем продаж для каждого столбца за 2010 год.

Я знаю, как получить общую сумму столбца, но у меня возникают проблемы с получением суммы для конкретных данных / временных рамок.

Даты в столбце индекса имеют следующий формат 2007-09-22

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

Вы можете использовать свой индекс довольно гибко, если это индекс даты и времени.При использовании фрейма данных (предоставленного @jezrael) вы можете сделать следующее.

df.groupby(df.index.month).sum()

Вывод

    Product 1   Product 2
4   18          22
8   12          15
12  15          18

Или

df.groupby(df.index.year).sum()

Выход

       Product 1    Product 2
2018    3           6
2019    12          15
2020    21          24
2021    9           10
0 голосов
/ 20 сентября 2019

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

import pandas as pd

data = {'Date': ['2007-09-22', '2007-09-23','2007-09-22'], 'Product 1': [1,2,3], 'Product 2': [4,5,6]}
df = pd.DataFrame(data, columns = ['Date','Product 1','Product 2'])

df.groupby('Date').sum()
0 голосов
/ 20 сентября 2019

Использовать частичное индексирование строк с sum:

rng = pd.date_range('2018-04-03', periods=10, freq='4M')
df = pd.DataFrame({'Product 1': range(10), 'Product 2': range(1, 11)}, rng)  
print (df)
            Product 1  Product 2
2018-04-30          0          1
2018-08-31          1          2
2018-12-31          2          3
2019-04-30          3          4
2019-08-31          4          5
2019-12-31          5          6
2020-04-30          6          7
2020-08-31          7          8
2020-12-31          8          9
2021-04-30          9         10

print (df['2020'])
            Product 1  Product 2
2020-04-30          6          7
2020-08-31          7          8
2020-12-31          8          9

При необходимости сумма на строки:

print (df['2020'].sum(axis=1))
2020-04-30    13
2020-08-31    15
2020-12-31    17
Freq: 4M, dtype: int64

При необходимостисумма по столбцам:

print (df['2020'].sum())
Product 1    21
Product 2    24
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...