猿问

如何在 Pandas 中搜索 A 列中的单词并根据 B 列进行计数?

我有基于文本、日期和作者的数据框,如下所示:


TEXT               Author               Date

This is a Cat       Jane                 1.01.1997

This is a Dog       Sara                 1.02.2009

I have a cat        Lesner               5.07.2001

所以,我想写一个这样的脚本:例如,我想搜索单词“Cat”,然后它应该根据 Date 列计算“Cat”:


输出应如下所示:


Date        count

1.01.1997    1

1.02.2009    0

5.07.2001    1


翻阅古今
浏览 77回答 1
1回答

慕标5832272

与忽略小写和大写一起使用Series.str.count,但也是计数单词,例如cation,locate因为包含子字符串cat:import redf['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  count0  This is a Cat    Jane  1.01.1997      11  This is a Dog    Sara  1.02.2009      02   I have a cat  Lesner  5.07.2001      1最后按列列表过滤:df1 = df[['Date','count']]print (df1)        Date  count0  1.01.1997      11  1.02.2009      02  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  exist0  This is a Cat    Jane  1.01.1997      11  This is a Dog    Sara  1.02.2009      02   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)
随时随地看视频慕课网APP

相关分类

Python
我要回答