Генерация столбца данных на основе ограничения - PullRequest
1 голос
/ 31 октября 2019

У меня есть фрейм данных, имеющий:

B_Date   C_b
02/08/2019  2
02/08/2019  1
02/08/2019  1
02/08/2019  1 
02/08/2019  3
02/08/2019  3
02/08/2019  2
02/08/2019  2
02/08/2019  2
02/08/2019  1
02/08/2019  4
02/08/2019  3
02/08/2019  4
02/08/2019  2
02/08/2019  4
02/08/2019  3
02/08/2019  4
02/08/2019  4
02/08/2019  4
03/08/2019  3
03/08/2019  1

Я хочу создать новый столбец i_found таким образом, чтобы на определенную дату, если сумма C_b больше 5000, она должна была бы поставить 4, иначе 5 во всехзаписи.

Ожидаемый результат

     B_Date    C_b  i_found
    02/08/2019  2    5
    02/08/2019  1    5
    02/08/2019  1    5
    02/08/2019  1    5
    02/08/2019  3    5

Обратите внимание, что это всего лишь примерная запись, и общее количество не достигнет 5000, но в кадре данных всего 30 тыс. Записей, где c_bдостигает 5000. Может ли кто-нибудь помочь с тем же.

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

1 Ответ

1 голос
/ 31 октября 2019

Один из способов - сделать merge для получения суммы по группам, а затем присвоить новые значения:

s = df.merge(df.groupby("B_Date").sum().reset_index(),on="B_Date",how="left",suffixes=("_old","_new"))
s["i_found"] = np.where(s["C_b_new"]>5000, 4, 5)

print (s.drop("C_b_new", axis=1))
#
        B_Date  C_b_old  i_found
0   02/08/2019        2        5
1   02/08/2019        1        5
2   02/08/2019        1        5
3   02/08/2019        1        5
4   02/08/2019        3        5
5   02/08/2019        3        5
6   02/08/2019        2        5
7   02/08/2019        2        5
8   02/08/2019        2        5
9   02/08/2019        1        5
10  02/08/2019        4        5
11  02/08/2019        3        5
12  02/08/2019        4        5
13  02/08/2019        2        5
14  02/08/2019        4        5
15  02/08/2019        3        5
16  02/08/2019        4        5
17  02/08/2019        4        5
18  02/08/2019        4        5
19  03/08/2019        3        5
20  03/08/2019        1        5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...