我有一个包含15000个值的pd数据框。我有另一个文本文件(所以数组或数据框)有400个值。我的任务是检查400个中的值大于数据框中列的元素。
即。我需要输出列len = 15000,值为0-400。
有什么好办法吗? for-looping违背了使用数据帧的目的; /
由于
答案 0 :(得分:1)
以'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])