我想寻找在数据帧中找到满足某些条件的行的有效方法。
数据帧有n行3列。值为-1
或0
或1
。
我想找到满足两个条件的行。你知道吗
我使用loop方法遍历所有行并找到符合条件的行。但是,这并不是一个有效的方法,尤其是当有一个大的数据帧,这一步只是第一步。你知道吗
# 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
我想在数据帧中找到行0。它可以用循环法来解决,但是否存在一个有效的解决方案?谢谢!你知道吗
逻辑:
[0] + [D2] + [D3] == 3
可以使用布尔掩码来表示每个单独的条件。第一个很简单:
第二个问题可以通过卷积运算来解决
然后把它们结合起来:
注意,在这个解决方案中,列数只是一个参数,因此它可以很容易地扩展。你知道吗
第一个条件:
第二个条件:
要查看感兴趣行的索引,请执行以下操作:
要访问这些df块中的第一个,请执行以下操作:
相关问题 更多 >
编程相关推荐