我有一个这样的数据框:
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
答案 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的任何组。将其用作屏蔽在unique
和len
上建立索引的掩码。
df.set_index