【发布时间】:2018-06-13 09:15:45
【问题描述】:
我有一个如下所示的 pandas 数据框,
col1 col2
0 12 1
1 1 7
2 54 17
3 11 191
4 3 39
5 76 2
6 18 6
生成df的代码:
df=pd.DataFrame({'col1':[12,1,54,11,3,76,18],'col2':[1,7,17,191,39,2,6]})
我想将 col1 值与完整的 col2 系列一一比较。 即,将 12 与 col2 进行比较,在 col2 中找到小于 12 的值并计算值,然后对 1 执行相同的操作,然后对 54 执行相同的操作,以此类推并将结果存储在另一个系列中。
到目前为止,我尝试如下,
df['res']=df.apply(lambda x:len(df[df['col2']<x['col1']]),axis=1)
它按我的预期工作。但是解决这个问题的方法很无效,当系列很大时它很烂。
我需要有效的方法来解决这个问题。因为实际数据集包含超过百万条记录。
预期输出:
col1 col2 res
0 12 1 4
1 1 7 0
2 54 17 6
3 11 191 4
4 3 39 2
5 76 2 6
6 18 6 5
【问题讨论】: