如何根据文本中单词的某些结尾来计算文本的行数
How to count rows of text based on certain endings of words in the text
我正在尝试计算我的数据框中包含 words/letters 'red' 的行数,以某种形式作为单独的单词或单词的一部分。
df = pd.DataFrame({'id': [10, 46, 75, 12, 99],
'text': [['The blurred vision is no good'],
['start', '15', 'tag', '#redding'],
[],
['The books were blue instead'],
['Red is the new Black ']
]
})
输出应计算第 0、1 和 4 行,即 count=3。
我尝试了以下代码:
df['text'].str.contains(r'[a-zA-Z]red+', na=False).sum()
但是没用。如果有人能帮我修复它,我将不胜感激。
由于“文本”列中有字符串列表,我将首先使用 space 连接这些单独的字符串。
然后,我将字符串小写以进行 case-insensitive 匹配,最后在整个连接字符串上使用 contains
。以一种形式出现的任何“红色”都可以通过这种方式轻松过滤:
>>> df['text'].str.join(" ").str.lower().str.contains('red')
0 True
1 True
2 False
3 False
4 True
Name: text, dtype: bool
以及行数:
>>> df['text'].str.join(" ").str.lower().str.contains('red').sum()
3
一个选项是在列表理解中使用 any
来检查字符串 "red"
是否出现在子列表的任何字符串中:
out = sum(any(True for x in lst if 'red' in x.lower()) for lst in df['text'])
输出:
3
我正在尝试计算我的数据框中包含 words/letters 'red' 的行数,以某种形式作为单独的单词或单词的一部分。
df = pd.DataFrame({'id': [10, 46, 75, 12, 99],
'text': [['The blurred vision is no good'],
['start', '15', 'tag', '#redding'],
[],
['The books were blue instead'],
['Red is the new Black ']
]
})
输出应计算第 0、1 和 4 行,即 count=3。
我尝试了以下代码:
df['text'].str.contains(r'[a-zA-Z]red+', na=False).sum()
但是没用。如果有人能帮我修复它,我将不胜感激。
由于“文本”列中有字符串列表,我将首先使用 space 连接这些单独的字符串。
然后,我将字符串小写以进行 case-insensitive 匹配,最后在整个连接字符串上使用 contains
。以一种形式出现的任何“红色”都可以通过这种方式轻松过滤:
>>> df['text'].str.join(" ").str.lower().str.contains('red')
0 True
1 True
2 False
3 False
4 True
Name: text, dtype: bool
以及行数:
>>> df['text'].str.join(" ").str.lower().str.contains('red').sum()
3
一个选项是在列表理解中使用 any
来检查字符串 "red"
是否出现在子列表的任何字符串中:
out = sum(any(True for x in lst if 'red' in x.lower()) for lst in df['text'])
输出:
3