检查 pandas 字符串中的 2 个单词是否相邻

Check if 2 words are adjacent in a pandas string

让我们假设一个数据框 (df) 有一个名为 'message' 的字符串列,其中包含交易消息。

我们还假设此变量 'message' 中的内容或值类似于

  1. '您的借记卡号 XXX 中存入 50 卢比'
  2. '100 卢比记入信用卡'

现在假设我要搜索 'message' 是否包含信用卡交易。 所以我会搜索关键字 'credit' 和 'card',如果这两个关键字都出现在消息中,那么它将被归类为信用卡交易。
代码:
df[ (df['message'].str.contains('credit')) & (df['message'].str.contains('card')) ]

但是这行代码将 return 我上面的消息,包括 (1) 和 (2),因为它们都包含关键字 'credit' 和 'card'。 但实际上,第一条消息显然不是信用卡交易。它恰好包含两个关键字。 那么有人可以帮我解决只会 return 的代码行吗 (2nd) 交易通过一起检查关键字 'credit card' 而不是单独检查?

你的症结与PANDAS无关;这完全是一个字符串处理问题。用

减少问题
s = df["Message"].str

现在,您需要找到“credit”和“card”。如果单词之间总是只有一个 space,那么简单的 `.contains("credit card") 将解决您的问题。如果您有其他空格或标点符号,那么您需要在字符串上做更多的工作。

仅对于 white-space,您可以 split 字符串并查找相邻的单词:

words = s.split()
for idx, word in enumerate(words[:-1]):    # look for credit in all but the final word
    if word == "credit" and words[idx+1] == "card":
        # You found "credit card" ... process the row

如果您有其他标点符号,则构建列表 words 以分隔标点符号并删除这些字符;具体如何取决于您未指定的输入中的字符。

这会让你继续吗?