python - 列表匹配中大小写不同的计数问题
问题描述
Name Text
0 K IeatApple
1 Y bananaisdelicious
2 B orangelikesomething
3 Q blueBanana
4 C appleislike
我想匹配数据框中的“文本”列和列表。
但是,“文本”列中的小写字母和大写字母没有区别。因此,为了捕获所有这些,列表更改为正则表达式,如下所示。
mylist = [apple, banana]
mylist = [f"(?i){re.escape(k)}" for k in mylist]
#contain matching list - column
extracted = df['text'].str.findall(f'({"|".join(mylist)})').apply(set)
#Matched words are added to the data frame as column.
df['matching'] = extracted.str.join(',')
#keyword counting
s = pd.DataFrame(extracted.tolist()).stack().value_counts()
print(s)
Apple 1
Banana 1
banana 1
apple 1
这样做的一个问题是它以不同的方式识别“apple”和“Apple”。
有没有办法同时匹配大小写字母并拼写同一个单词?
解决方案
一个想法是将值转换为小写:
mylist = [apple, banana]
mylist = [f"(?i){re.escape(k.lower())}" for k in mylist]
extracted = df['text'].str.lower().str.findall(f'({"|".join(mylist)})').apply(set)
推荐阅读
- c++ - 大约 2Gb 后 C++ ofstream 写入性能下降
- react-native - 程序类型已经存在:com.reactnativecommunity.picker.BuildConfig
- r - 获取特定值
- c - 使用 C SDK 将数据发布到 GCP IoT 核心和 Pub/Sub 时出错
- xml - 使用 VB.NET 解析 Podcast XML:iTunes 标签问题
- android - Android - 如何从 kotlin 流中读取值?
- python - python web抓取与beautifulsoup find
- 在不同的
- 名称标签
- 在不同的
- python - 如何在不抑制实时打印的情况下捕获 jupyter 单元输出?
- shell - grep 和 awk 使用
- linux - 无法通过公网ip访问nginx服务器