Группировка с условием на другой столбец в пандах - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть фрейм данных, в котором я делаю следующее:

df1 = df.groupby('Date_1')['weight'].sum().reset_index(name='total_weight')

Я пытаюсь агрегировать общую сумму весов за конкретную дату.

Я хочу добавить условие, которое принимает сумму только тогда, когда is_b равен 1. is_b - это другой столбец, в котором есть 2 значения 0 и 1.

Может кто-нибудь посоветовать, как использоватьусловие с групповым в пандах.

Спасибо

РЕДАКТИРОВАТЬ

DF

Date_1    weight isBooked
01/09/2019  181  1
01/09/2019  189  1
01/09/2019  174  1
01/09/2019  267  1
01/09/2019  308  1
02/09/2019  79   0
02/09/2019  179  1
02/09/2019  435  1

Обратите внимание, что в фрейме данных есть и другие столбцы, просто разместив соответствующие поляВот.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Можете ли вы проверить, является ли это то, что вы ищете.

import pandas as pd
from io import StringIO
csv = StringIO('''Date_1    weight isBooked
        01/09/2019  181  1
        01/09/2019  189  1
        01/09/2019  174  1
        01/09/2019  267  1
        01/09/2019  308  1
        02/09/2019  79   0
        02/09/2019  179  1
        02/09/2019  435  1''')
df = pd.read_csv(csv, delim_whitespace=True)
df1 = df.loc[df.isBooked == 1 ].groupby('Date_1')['weight'].sum().reset_index(name='total_weight')
print(df1)

Вывод

       Date_1  total_weight
0  01/09/2019          1119
1  02/09/2019           614
0 голосов
/ 07 ноября 2019

Вы можете groupby по результату умножения:

(df['weight'] * df['isBooked']).groupby(df['Date_1']).sum()

Вывод:

Date_1
01/09/2019    1119
02/09/2019     614
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...