基于约束生成数据帧列



我有一个数据帧,它具有:

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_find,这样对于特定日期,如果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,但数据帧总共有30k个条目,其中c_b达到5000。有人能帮上同样的忙吗。

有人能帮忙吗。

一种方法是执行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

最新更新