【问题标题】:How to highlight and count specific keywords in a pandas dataframe如何在 pandas 数据框中突出显示和计算特定关键字
【发布时间】:2021-05-28 22:29:50
【问题描述】:

对于我的dfText 列中的每一行,我想要执行以下操作:

  1. 突出显示关键字gross,suck,singing & ponzi

  2. 统计每行中的关键字数量并将它们存储在Count 列中

import pandas as pd

data = {'Text': ['The bread tastes good','Tuna is gross','Teddy is a beach bum','Angela suck at singing!','oneCoin was a ponzi scheme'],
        'ID': [1001,1002,1003,1004,1005]
        }

df = pd.DataFrame(data, columns = ['ID', 'Text'])

print(df)


所需的输出应包括 Count 列,如下所示:

我的尝试(不是最好的!你可以忽略这个):

# keyword list
key_words = ['gross','suck','singing','ponzi']

# highlight the keywords
df['Text'].applymap(lambda x: "background-color: yellow" if x else "")

# count the keywords present in each row

df['Count'] = df['Text'].str.count(r"\b(?:{})\b".format("|".join(key_words)))


高度赞赏所有尝试!

【问题讨论】:

  • df['Count'] = df['Text'].str.count(r"\b(?:{})\b".format("|".join(key_words)))?
  • @WiktorStribiżew- 谢谢,这部分工作正常!标记key_words 怎么样?
  • 您需要在哪里突出显示它们?在 Linux 终端中?在 Jupyter 笔记本中?
  • @WiktorStribiżew,Jupyter 笔记本还是导出为 csv 文件?

标签: python regex pandas


【解决方案1】:

使用Series.str.count:

>>> df['Text'].str.count(fr"\b(?:{'|'.join(key_words)})\b")
0    0
1    1
2    0
3    2
4    1
Name: Text, dtype: int64

\b 是一个字边界,你可以用它来计算整个字数。

您不能在 Jupyter 笔记本中突出显示单独的单词。您可以将单词提取到单独的列中:

df['Matches'] = df['Text'].str.findall(fr"\b(?:{'|'.join(key_words)})\b")

【讨论】:

  • 谢谢,高亮部分呢?或者我们可以像上图那样创建一个新列Keyword_Present
  • @RickyTricky 抱歉,没有突出显示。可以改用df['Keyword_Present'] = df['Text'].str.findall(fr"\b(?:{'|'.join(key_words)})\b").str.join(' ')
【解决方案2】:

使用str,找到所有。那会给你一个清单。使用 str.len() 计算每个列表中的元素

df['count']=df['Text'].str.findall('|'.join(key_words)).str.len()
df

【讨论】:

  • 谢谢,问题的突出部分有什么好运气吗?
猜你喜欢
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 2015-12-27
相关资源
最近更新 更多