如何在pandas数据框中查找具有正值和负值的行

时间:2019-07-05 23:40:01

标签: python pandas dataframe

我有一个这样的数据框:

     e_col   in_col     word_col      w_col
     31      9        algorithm    -0.053538
     31      9              ubc    -0.053578
     31      9              kth    -0.053595
     31      8              ubc    -0.053633
     30      8        algorithm     0.043637
     30      7             dale     0.053648
     28      6             dale     0.053671

我想找到同一行word_colw_col中得到正值和负值的行。

因此,例如,这里的输出将是:

 31      9        algorithm    -0.053538
 30      8        algorithm     0.043637

1 个答案:

答案 0 :(得分:2)

编辑2 :您也可以使用transform来避免set_index/reset_index,如下所示:

m = df.w_col.lt(0).groupby(df.word_col).transform('nunique').eq(2)
df.loc[m]

Out[2768]:
   e_col  in_col   word_col     w_col
0     31       9  algorithm -0.053538
4     30       8  algorithm  0.043637

编辑1 :创建m的一种较短方法是使用nunique(),如下所示:

m =  df.w_col.lt(0).groupby(df.word_col).nunique().eq(2)

原始
请执行以下操作:在小于{{1}的w_col上创建布尔掩码,并按0的{​​{1}}创建布尔掩码。接下来,在每个组上调用groupby,找到具有word_col = 2的任何组。将其用作屏蔽在uniquelen上建立索引的掩码。

df.set_index