1 回答

TA贡献1966条经验 获得超4个赞
与忽略小写和大写一起使用Series.str.count,但也是计数单词,例如cation,locate因为包含子字符串cat:
import re
df['count'] = df['TEXT'].str.count('cat', flags=re.I)
为了防止计数子串,可以添加单词边界\b\b:
df['count'] = df['TEXT'].str.count(r'\bcat\b', flags=re.I)
print (df)
TEXT Author Date count
0 This is a Cat Jane 1.01.1997 1
1 This is a Dog Sara 1.02.2009 0
2 I have a cat Lesner 5.07.2001 1
最后按列列表过滤:
df1 = df[['Date','count']]
print (df1)
Date count
0 1.01.1997 1
1 1.02.2009 0
2 5.07.2001 1
编辑:
我只是好奇我们是否可以计算“nunique”,因为例如如果 cat 在句子中出现两次,那么它将计为 2,但我只需要检查“Cat”这个词是否可用。因此,输出应为 0 或 1。
然后更好地使用Series.str.contains并转换为整数True->1和False->0映射:
df['exist'] = df['TEXT'].str.contains(r'\bcat\b', flags=re.I).astype(int)
print (df)
TEXT Author Date exist
0 This is a Cat Jane 1.01.1997 1
1 This is a Dog Sara 1.02.2009 0
2 I have a cat Lesner 5.07.2001 1
如果需要两列都可以使用Series.clip:
df['count'] = df['TEXT'].str.count('cat', flags=re.I)
df['exist'] = df['count'].clip(upper=1)
添加回答
举报