擅长:python、mysql、java
<p>您可以在“col1”、“col2”和“col3”上使用<code>groupby</code>,在每个组的<a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#transformation" rel="nofollow noreferrer">^{<cd2>}</a>中,使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.subtract.html" rel="nofollow noreferrer">^{<cd3>}</a>作为<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.outer.html" rel="nofollow noreferrer">^{<cd4>}</a>的ufunc来计算该组的“Time”列中的值之间的所有差异,然后在轴=0上的<code>np.abs</code>小于10和<code>np.sum</code>时,您可以计算每个值在+/-10范围内的值</p>
<pre><code>import numpy as np
df['cumVal'] = (df.groupby(['col1','col2','col3'])['Time']
.transform(lambda x: (np.abs(np.subtract.outer(x, x))<=10).sum(0)))
print (df)
Time col1 col2 col3 cumVal
0 2.0 a x 10.0 2.0
1 3.0 b y 11.0 1.0
2 1.0 a x 10.0 2.0
3 6.0 c z 12.0 1.0
4 20.0 c x 13.0 2.0
5 23.0 a y 24.0 1.0
6 14.0 c x 13.0 2.0
7 16.0 b y 11.0 1.0
</code></pre>