Arrays 如何使用dataframe根据特定条件过滤csv文件中的数据

Arrays 如何使用dataframe根据特定条件过滤csv文件中的数据,arrays,python-2.7,pandas,Arrays,Python 2.7,Pandas,我有以下数据。这些是卫星号,它的状态和价值。 此处状态“B”的值正在更改为0或某些值。价值 状态“A”始终为0。不接受状态为A且对应状态为“B”的Val=0的Sat 不算在内 我的目标是遍历每一行,并在每一行找到正确的卫星。如果任何一行都是A或B=0,则该行不计算在内 所以我的愿望是: a=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

我有以下数据。这些是卫星号,它的状态和价值。 此处状态“B”的值正在更改为0或某些值。价值 状态“A”始终为0。不接受状态为A且对应状态为“B”的Val=0的Sat 不算在内

我的目标是遍历每一行,并在每一行找到正确的卫星。如果任何一行都是A或B=0,则该行不计算在内

所以我的愿望是: a=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)
#但它显示出错误。请指出我犯错误的地方

谢谢

我相信您需要:

#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

我不确定我是否理解你所说的价值、状态和地位是什么意思;这就是说,这个框架会有帮助吗<代码>df2=df.drop(df[(df['state-01']='A')和(df['val-02']==0)]。index)发件人:@Evan。是的,这将是state。值为val-01、val-02、val-03。那么,我如何计算每行的卫星数量和count@Jezrael的数量呢。你是天才!!已经尝试了几个小时的许多条件,但没有用高兴能帮上忙!好天气!@耶斯雷尔。我接近maskB,但没有应用mask.values:)是的,在两个mask中需要相同的列名,或者对于numpy数组使用更简单的
values
,会出现问题;)