我有以下数据。这些是卫星号码,它的状态和价值。 这里的状态值' B'正在改变0或某个值。的价值 状态' A'始终为0.星期六,状态A和Val = 0表示相应的状态' B'是不可接受的 而不算数。
我的目标是遍历每一行,并在每一行找到正确的卫星。如果任何行都是A或B = 0,则该行不计算。
所以我的愿望输出是: α= 3,1,1,1 计数= 4,第4行不计算
sv-01 sv-02 SV-03 state-01 state-02 state-03 val-01 val-02 val-03
7 12 8 B B B .23 0.34 1.03
7 12 8 B B A .35 0 0
7 12 8 B A A 1.45 0 0
7 12 8 A A A 0 0 0
7 12 8 A B B 0 0 3.21
#我的python实现是
mask = read_data.filter(like='state').eq('A')
result_count_Nj1 = mask.sum(axis=1).rsub(3)
#我试过了
mask = read_data.filter(like='state').eq('A') and read_data.filter(like='state').eq('B'!=0)
#但它显示错误。请建议我犯错的地方
由于
答案 0 :(得分:1)
我相信你需要:
#check B values
maskB = read_data.filter(like='state') == 'B'
print (maskB)
state-01 state-02 state-03
0 True True True
1 True True False
2 True False False
3 False False False
4 False True True
#check not 0 values for B values only
mask0 = read_data.filter(like='val').where(maskB.values, 0) != 0
print (mask0)
val-01 val-02 val-03
0 True True True
1 True False False
2 True False False
3 False False False
4 False False True
a = mask0.sum(1)
print (a)
0 3
1 1
2 1
3 0
4 1
dtype: int64
b = mask0.any(1).sum()
print (b)
4