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

2024-09-27 00:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

     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

Tags: 数据incolalgorithmwordubc负值kth
1条回答
网友
1楼 · 发布于 2024-09-27 00:18:53

编辑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)

原件
执行以下操作:在小于0w_colgroupby上创建布尔掩码。接下来,对每个组调用unique,并找到len=2的任何组。将此用作在df.set_indexreset_index上建立索引的掩码。你知道吗

m = df.w_col.lt(0).groupby(df.word_col).unique().str.len().eq(2)
df.set_index('word_col').loc[m].reset_index()

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

相关问题 更多 >

    热门问题