假设我有以下熊猫DataFrame
:
id | a1 | a2 | a3 | a4
1 | 3 | 0 | 10 | 25
2 | 0 | 0 | 31 | 15
3 | 20 | 11 | 6 | 5
4 | 0 | 3 | 1 | 7
我要计算的是,对于n
的不同值,每行中n
连续非零值的非重叠运行次数。预期输出为:
^{pr2}$
例如,2s
列中的每个值显示该行中长度为2的非重叠运行数,3s
列中的每个值显示长度为3的相应运行数,依此类推。在
我想知道有没有什么熊猫或裸体的方法来处理这个问题?在
Tags:
管理非重叠功能的解决方案。在
它使用strings-fast操作来查找所有的运行,然后使用//来查找每个给定长度的不重叠的运行数。在
使用
^{pr2}$df:
np.apply_along_axis(count,1,df,[2,3,4])
返回这是
df
的预期结果。在这里有一种使用^{} 来解决行中任意数量元素的方法-
基本思路
其基本思想是我们可以使用滑动窗口对每行中存在的非零进行求和。假设我们在看有多少三个非零连续出现。因此,我们将使用一个大小为
3
的滑动窗口并得到滑动求和。所有那些滑动窗口中所有三个元素都是非零的地方将产生一个3
的总和。因此,我们寻找匹配3
的求和并对其进行计数。就这样!我们遍历所有窗口大小来捕获2s
、3s
等所有窗口下面是一个在数组上计数
^{pr2}$3s
的示例运行-样本运行-
请注意,如果第一列是}。在
'id'
,那么我们需要跳过它。因此,我们需要在建议的解决方案代码中使用df.values[:,1:]
,而不是{相关问题 更多 >
编程相关推荐