Python 查找非零数字的位置和大小
Python find location and size of non zero numbers
我有一个包含以下元素的数据框:
1/2/2010 5:00 0
1/2/2010 6:00 0
1/2/2010 7:00 0
1/2/2010 8:00 0
1/2/2010 9:00 5
1/2/2010 10:00 0
1/2/2010 11:00 2
1/2/2010 12:00 51
1/2/2010 13:00 68
1/2/2010 14:00 58
1/2/2010 15:00 0
1/2/2010 16:00 0
1/2/2010 17:00 0
1/2/2010 18:00 60
1/2/2010 19:00 24
1/2/2010 20:00 24
1/2/2010 21:00 0
1/2/2010 22:00 0
我想找到所有非零数字簇的频率以及该簇中第一个非零元素的位置。
对于上述数组,我希望答案为:
Location NumOfInstances
1/2/2010 9:00 1
1/2/2010 11:00 4
1/2/2010 18:00 3
我不知道该怎么做。即使使用 for 循环,这也会很快变得复杂。
假设一个名为 s
的系列
Pandas
m = s.eq(0)
g = m.cumsum()[~m]
g.groupby(g).transform('size').drop_duplicates()
2010-01-02 09:00:00 1
2010-01-02 11:00:00 4
2010-01-02 18:00:00 3
dtype: int64
麻木
实验性
m = s.values == 0
w = np.flatnonzero(np.diff(np.append(True, m)))
pd.Series(np.diff(w)[::2], s.index[w[::2]])
2010-01-02 09:00:00 1
2010-01-02 11:00:00 4
2010-01-02 18:00:00 3
dtype: int64
我有一个包含以下元素的数据框:
1/2/2010 5:00 0
1/2/2010 6:00 0
1/2/2010 7:00 0
1/2/2010 8:00 0
1/2/2010 9:00 5
1/2/2010 10:00 0
1/2/2010 11:00 2
1/2/2010 12:00 51
1/2/2010 13:00 68
1/2/2010 14:00 58
1/2/2010 15:00 0
1/2/2010 16:00 0
1/2/2010 17:00 0
1/2/2010 18:00 60
1/2/2010 19:00 24
1/2/2010 20:00 24
1/2/2010 21:00 0
1/2/2010 22:00 0
我想找到所有非零数字簇的频率以及该簇中第一个非零元素的位置。
对于上述数组,我希望答案为:
Location NumOfInstances
1/2/2010 9:00 1
1/2/2010 11:00 4
1/2/2010 18:00 3
我不知道该怎么做。即使使用 for 循环,这也会很快变得复杂。
假设一个名为 s
Pandas
m = s.eq(0)
g = m.cumsum()[~m]
g.groupby(g).transform('size').drop_duplicates()
2010-01-02 09:00:00 1
2010-01-02 11:00:00 4
2010-01-02 18:00:00 3
dtype: int64
麻木
实验性
m = s.values == 0
w = np.flatnonzero(np.diff(np.append(True, m)))
pd.Series(np.diff(w)[::2], s.index[w[::2]])
2010-01-02 09:00:00 1
2010-01-02 11:00:00 4
2010-01-02 18:00:00 3
dtype: int64