如何比较了一系列的标量
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的阵列和计数通过True
只np.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)
以上是关于如何比较了一系列的标量的主要内容,如果未能解决你的问题,请参考以下文章
将浮点数与数组中的值进行比较时,“TypeError:只能将整数标量数组转换为标量索引”