如何比较了一系列的标量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何比较了一系列的标量相关的知识,希望对你有一定的参考价值。

我想从一个不同的系列比较一datetime64 [NS]大熊猫与标系列,也datetime64 [NS],在一个循环。

数据框:

ds.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 174764 entries, 0 to 185622 Data columns (total 2 columns): t1 174764 non-null datetime64[ns] t2 174764 non-null datetime64[ns]

循环:

import pandas as pd
import numpy as np

ds['t3'] = np.zeros(ds.shape[0])
for i in range(ds.shape[0]):
    r_i= ds['t1'].iat[i]
    ds['t3'].iat[i] = ds[(ds.t1.gt(r_1)) & (ds.t2.le(r_i))]['t1'].count()

目前,持续时间大约需要8分钟。我想至少有一半的时间。

答案

将值转换为numpy的阵列和计数通过Truenp.sum值:

t1 = ds['t1'].values
t2 = ds['t2'].values
ds['t3'] = [np.sum((t1 > a) & (t2 < a)) for a, b in zip(t1, t2)]

另一个想法 - 需要更多的内存:

t11 = t1[:, None]
ds['t3'] = np.sum((t1 > t11) & (t2 < t11), axis=1)

以上是关于如何比较了一系列的标量的主要内容,如果未能解决你的问题,请参考以下文章

如何优化C ++代码的以下片段 - 卷中的零交叉

我如何使用 codeanywhere 片段

将浮点数与数组中的值进行比较时,“TypeError:只能将整数标量数组转换为标量索引”

Sublime Text自定制代码片段(Code Snippets)

比较有用的php代码片段

逐元素比较失败;返回标量,但将来将执行元素比较