基于约束的数据帧列生成

2024-05-05 12:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧有:

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\u found,这样对于一个特定的日期,如果C\u 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。有人能帮上忙吗

有人能帮忙吗


Tags: 数据示例date条目产量总数found
1条回答
网友
1楼 · 发布于 2024-05-05 12:19:59

一种方法是执行merge以获得groupby和,然后分配新值:

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

相关问题 更多 >