我有一个数据帧,它具有:
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