基于从另一列的值开始的一列切片数据帧

时间:2017-05-22 04:16:25

标签: python pandas sql-like string-matching

我有一个名为data的数据框,如下所示:

|...|category|...|ngram|...|

我需要将此数据帧切片到categoryngram的值开头的实例。例如,如果我有以下实例:

  • 类别:床
  • ngram:bed

然后应该从结果数据帧中删除该实例。

在T-SQL中,我使用以下查询(这可能不是最好的方法,但它有效):

SELECT
   *
FROM   mytable
WHERE  category NOT LIKE ngram+'%';

我已经对此有所了解,我最好的尝试是:

data[data.category.str.startswith(data.ngram.str) == True]

但是这不会返回任何行,也不会返回反向(使用== True

1 个答案:

答案 0 :(得分:0)

#use df.apply to filter the rows with category starts with ngram.
data[data.apply(lambda x: x.category.startswith(x.ngram), axis=1)]