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

问题描述 投票:0回答:2

我有一个像这样的数据框:

     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_col
w_col
中同时获得正值和负值的行。

所以,例如这里的输出将是:

 31      9        algorithm    -0.053538
 30      8        algorithm     0.043637
python pandas dataframe
2个回答
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)

原文
执行以下操作:在

w_col
上创建小于
0
的布尔掩码,并通过
groupby
创建布尔掩码。接下来,在每个组上调用
word_col
并找到任何具有
unique
= 2 的组。使用它作为掩码在
len
df.set_index
上建立索引。

reset_index



0
投票
© www.soinside.com 2019 - 2024. All rights reserved.