熊猫数据框元素与值列表进行比较

时间:2017-06-08 15:51:43

标签: python pandas

我有一个包含15000个值的pd数据框。我有另一个文本文件(所以数组或数据框)有400个值。我的任务是检查400个中的值大于数据框中列的元素。

即。我需要输出列len = 15000,值为0-400。

有什么好办法吗? for-looping违背了使用数据帧的目的; /

由于

1 个答案:

答案 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])