我有一个数据框,其中包含:
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,但是数据框总共有3万个条目,其中c_b达到5000。任何人都可以提供帮助。
任何人都可以帮忙。
答案 0 :(得分:1)
一种方法是执行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