如何检查列中的条目中的模式并计算模式的数量



我有一个DataFrame:

Name         Price
0        Dictionary     3
1        Book           4
2        Dict En-Ru     2
3        BookforKids    6
4        Dict FR-CHN    1

我需要一段代码来检查列"Name"中我可以自己指定的模式,并计算另一个DataFrame中已建立的模式的数量。

例如,用模式检查"名称"列中的条目数量。Dict an Book忽略大小写应该会给出以下结果:

|  Pattern    | Occurencies |
| ----------- | ----------- |
| Dict        | 3           |
| Book        | 2           |

以下是使用str.extract:的一种方法

patterns = ['Dict','Book']
df.Name.str.extract(rf"({'|'.join(patterns)})", expand=False).value_counts()
Dict    3
Book    2
Name: 0, dtype: int64

您可以使用flags参数使其不区分大小写:

patterns_lower = '|'.join([s.lower() for s in patterns])
(df.Name.str.lower().str.extract(rf"({patterns_lower})", expand=False)
.value_counts())

您可以将模式定义为自定义函数:

# example
def get_pattern(txt):
if 'Dict' in txt:
return 'Dict'
if 'Book' in txt:
return 'Book'
return np.nan

然后在数据帧中应用并使用值计数:

df['Pattern'] = df['Name'].apply(get_pattern)
df['Pattern'].value_counts()
Dict    3
Book    2
dtype: int64

最新更新