检查 pandas 字符串中的 2 个单词是否相邻
Check if 2 words are adjacent in a pandas string
让我们假设一个数据框 (df) 有一个名为 'message' 的字符串列,其中包含交易消息。
我们还假设此变量 'message' 中的内容或值类似于
- '您的借记卡号 XXX 中存入 50 卢比'
- '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
以分隔标点符号并删除这些字符;具体如何取决于您未指定的输入中的字符。
这会让你继续吗?
让我们假设一个数据框 (df) 有一个名为 'message' 的字符串列,其中包含交易消息。
我们还假设此变量 'message' 中的内容或值类似于
- '您的借记卡号 XXX 中存入 50 卢比'
- '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
以分隔标点符号并删除这些字符;具体如何取决于您未指定的输入中的字符。
这会让你继续吗?