我有一个像这样的数据框:
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
编辑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