我有一个包含 15000 个值的列的 pd 数据框。我有另一个包含 400 个值的文本文件(数组或数据框)。我的任务是检查这 400 个值中有多少比我的数据框中列的元素大。
即我需要一个列 len=15000 作为输出,其值为 0-400。
有什么好的方法可以做到这一点?For 循环违背了使用数据帧的目的;/
谢谢
与'col'
作为列标题和arr400
作为阵列400
元件,一种方法将是使用NumPy broadcasting
-
(df.col.values[:,None] < arr400).sum(axis=1)
可能会使用更快np.count_nonzero
-
np.count_nonzero(df.col.values[:,None] < arr400, axis=1)
样品运行 -
In [246]: df
Out[246]:
col
0 7
1 2
2 6
3 0
4 8
5 1
6 6
7 3
8 1
9 1
In [247]: arr400
Out[247]: array([2, 2, 8, 7])
In [248]: (df.col.values[:,None] < arr400).sum(axis=1)
Out[248]: array([1, 2, 2, 4, 0, 4, 2, 2, 4, 4])
In [249]: np.count_nonzero(df.col.values[:,None] < arr400, axis=1)
Out[249]: array([1, 2, 2, 4, 0, 4, 2, 2, 4, 4])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句