是否有一些有效的方法可以找到符合条件的行,这些条件引用了接下来一些行中的值?

yaoyaoya

我想寻找有效的方法来查找满足数据帧中某些条件的行。数据框有 n 行和 3 列。值为-1or01
我想找到满足两个条件的行。

  1. 条件:行(row0)的值!=-1;
  2. 条件:由接下来的 3 行 (row1, row2, row3) = 1 生成的数组的对角线。

我使用循环方法遍历所有行并找到满足条件的行。但是,这不是一种有效的方法,尤其是当有一个大数据框并且这一步只是第一步时。

# Given a dataframe (n*3) 

randNum=random.choices(range(-1,2),k=333) # k=3*int
frame=pd.DataFrame(np.array(randNum).reshape(-1,3))

# its values = -1,0,1, like this:
# In [126]:frame
# Out[126]:
#     0  1  2
# 0    1  0  0
# 1    1 -1  1
# 2    1  1  1
# 3   -1 -1  1
# 4   -1  0 -1
# 5    1  1 -1
# ...
# 105 -1 -1 -1
# 106 -1 -1  0
# 107 -1 -1  0
# 108  0 -1  1
# 109 -1  0  1
# 110  1  0  1
#  I want find the row(s) that all of the values of
#  columns('0','1','2')!=-1, and while the value of 
#  the diagonal of next three rows =1, like this:
#       0  1  2
# row0  v1 v2 v3     # v1!=v2!=v3!=-1, it may be 1 or 0.
# row1   1  v  v
# row2   v  1  v          # v =-1 or 0 or 1
# row3   v  v  1
# the diagonal of rows (row1,row2,row3)=1

我想在 DataFrame 中找到 row0。可以通过loop方法解决,但是有没有有效的解决方法?非常感谢 !

乔索勒

您可以使用布尔掩码来表示每个单独的条件。第一个很简单:

c1_mask = frame[0] != -1

# edited version:
c1_mask = (frame!=-1).all(axis=1)

第二个可以通过卷积运算解决

from scipy.signal import convolve2d

c2_mask = convolve2d(frame.values, np.eye(3), mode='valid')
c2_mask = (np.vstack([c2_mask, np.zeros((3, 1))]) == 3).reshape(-1)

# edited version:
c2_kernal = np.vstack((np.zeros((1,3)), np.eye(3)))
c2_mask = convolve2d(frame.values, c2_kernal, mode='valid')
c2_mask = (c2_mask == 3).reshape(-1)

然后将它们组合起来:

frame[c1_mask & c2_mask]

# edited version:
(frame[:-3])[(c1_mask[:-3]).shift[-1] & c2_mask]

请注意,在此解决方案中,列数只是一个参数,因此可以轻松扩展。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫-获取一些没有指定条件的上/下一行的值

来自分类Dev

加快一些numpy操作的有效方法

来自分类Dev

根据条件替换一些行

来自分类Dev

是否可以在`boost :: signal`中添加一些条件?

来自分类Dev

根据另一列的行值有条件地返回一些行值的向量

来自分类Dev

只有一些drush命令有效

来自分类Dev

Python 中是否有一些函数可用于生成具有特殊条件的矩阵?

来自分类Dev

一些有效的游标用途是什么?

来自分类Dev

按钮(禁用=假)条件;在某些情况下有效,而在另一些情况下无效

来自分类Dev

是否有一些算法不支持有效的并行实现?

来自分类Dev

根据一些复杂的条件删除一些行

来自分类Dev

通过键比较行中的两个值,然后有条件地向表中添加一些内容?

来自分类Dev

是否有一些属性可以使Ionicons获得一些媒体反馈?

来自分类Dev

分组并根据条件修剪一些行

来自分类Dev

如何检查每分钟表中是否有一些新行?

来自分类Dev

preg_replace 有一些条件

来自分类Dev

Python中的Tarfile:我是否可以仅提取一些数据来更有效地解压缩?

来自分类Dev

带有一些列的行中的最小值

来自分类Dev

一些AsyncTask,不同的登录方式,有效的方法

来自分类Dev

在熊猫中复制一些行并更改一些值

来自分类Dev

是否有一些HTTPS标准?

来自分类Dev

是否可以基于父元素在SAPUI5中进行一些条件绑定?

来自分类Dev

在Matlab中根据一种columan条件选择一些随机行

来自分类Dev

有没有一种方法可以添加一些用户使用c ++输入的行?

来自分类Dev

一些UITableView Delegate方法被调用了5次,另一些根本没有被调用

来自分类Dev

从行中跳过一些文本

来自分类Dev

代码中是否有一些设计模式?

来自分类Dev

合并一些行

来自分类Dev

一些应该被隐藏的行没有被隐藏

Related 相关文章

  1. 1

    熊猫-获取一些没有指定条件的上/下一行的值

  2. 2

    加快一些numpy操作的有效方法

  3. 3

    根据条件替换一些行

  4. 4

    是否可以在`boost :: signal`中添加一些条件?

  5. 5

    根据另一列的行值有条件地返回一些行值的向量

  6. 6

    只有一些drush命令有效

  7. 7

    Python 中是否有一些函数可用于生成具有特殊条件的矩阵?

  8. 8

    一些有效的游标用途是什么?

  9. 9

    按钮(禁用=假)条件;在某些情况下有效,而在另一些情况下无效

  10. 10

    是否有一些算法不支持有效的并行实现?

  11. 11

    根据一些复杂的条件删除一些行

  12. 12

    通过键比较行中的两个值,然后有条件地向表中添加一些内容?

  13. 13

    是否有一些属性可以使Ionicons获得一些媒体反馈?

  14. 14

    分组并根据条件修剪一些行

  15. 15

    如何检查每分钟表中是否有一些新行?

  16. 16

    preg_replace 有一些条件

  17. 17

    Python中的Tarfile:我是否可以仅提取一些数据来更有效地解压缩?

  18. 18

    带有一些列的行中的最小值

  19. 19

    一些AsyncTask,不同的登录方式,有效的方法

  20. 20

    在熊猫中复制一些行并更改一些值

  21. 21

    是否有一些HTTPS标准?

  22. 22

    是否可以基于父元素在SAPUI5中进行一些条件绑定?

  23. 23

    在Matlab中根据一种columan条件选择一些随机行

  24. 24

    有没有一种方法可以添加一些用户使用c ++输入的行?

  25. 25

    一些UITableView Delegate方法被调用了5次,另一些根本没有被调用

  26. 26

    从行中跳过一些文本

  27. 27

    代码中是否有一些设计模式?

  28. 28

    合并一些行

  29. 29

    一些应该被隐藏的行没有被隐藏

热门标签

归档