考虑我有两个pandas数据帧
df = pd.DataFrame()
df['r_no'] = [1,1,1,2,3,1,1,1,2]
df['user'] = ['sam','sam','sam','sam','peter','jack','jack','Kris','peter']
df['value'] = [76,76,7,8,8,2,29,2,8]
df['cam_id'] = ['ab','abc','ab','ab','ab','abcd','abcd','abcd','ab']
df_2 = pd.DataFrame()
df_2['r_no'] = [1,3,2,2,4,1,1,3,2,5,7,2,8,9,3]
df
r_no user value cam_id
0 1 sam 76 ab
1 1 sam 76 abc
2 1 sam 7 ab
3 2 sam 8 ab
4 3 peter 8 ab
5 1 jack 2 abcd
6 1 jack 29 abcd
7 1 Kris 2 abcd
8 2 peter 8 ab
df_2
r_no
0 1
1 3
2 2
3 2
4 4
5 1
6 1
7 3
8 2
9 5
10 7
11 2
12 8
13 9
14 3
预期产出 df dataframe中的新列
df['count_greaterandequal']
0 3
1 3
2 3
3 7
4 10
5 3
6 3
7 3
8 7
计算数量 df --- dataframe 中的 r_no 等于或大于 df_2 ---数据帧
答案 0 :(得分:0)
在底层数组上使用广播的numpy比较来提高性能。
df['count_greaterandequal'] = (df.r_no.values >= df_2.r_no[:, None]).sum(0)
df
r_no user value cam_id count_greaterandequal
0 1 sam 76 ab 3
1 1 sam 76 abc 3
2 1 sam 7 ab 3
3 2 sam 8 ab 7
4 3 peter 8 ab 10
5 1 jack 2 abcd 3
6 1 jack 29 abcd 3
7 1 Kris 2 abcd 3
8 2 peter 8 ab 7