Python 如何检查列中的条目中的模式并计算模式数?
我有一个数据帧:Python 如何检查列中的条目中的模式并计算模式数?,python,string,pandas,dataframe,data-analysis,Python,String,Pandas,Dataframe,Data Analysis,我有一个数据帧: Name Price 0 Dictionary 3 1 Book 4 2 Dict En-Ru 2 3 BookforKids 6 4 Dict FR-CHN 1 我需要一段代码来检查“Name”列中我可以指定的模式,并计算另一个数据帧中创建的模式的数量 例如,使用patterns Dict检查“Name”列中的条目数。忽略案
Name Price
0 Dictionary 3
1 Book 4
2 Dict En-Ru 2
3 BookforKids 6
4 Dict FR-CHN 1
我需要一段代码来检查“Name”列中我可以指定的模式,并计算另一个数据帧中创建的模式的数量
例如,使用patterns Dict检查“Name”列中的条目数。忽略案例的书应给出以下结果:
| Pattern | Occurencies |
| ----------- | ----------- |
| Dict | 3 |
| Book | 2 |
您可以将模式定义为自定义函数:
# 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
您可以将模式定义为自定义函数:
# 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
这里有一种方法:
您可以使用flags
参数使其不区分大小写:
patterns_lower = '|'.join([s.lower() for s in patterns])
(df.Name.str.lower().str.extract(rf"({patterns_lower})", expand=False)
.value_counts())
这里有一种方法:
您可以使用flags
参数使其不区分大小写:
patterns_lower = '|'.join([s.lower() for s in patterns])
(df.Name.str.lower().str.extract(rf"({patterns_lower})", expand=False)
.value_counts())
谢谢你的编辑@jez!扩展在我的脑海中没有:)它可以工作,但它是区分大小写的,它不应该对“book”和“book”有任何区别,如何改变它?它给了我两行,一行是“book”,另一行是“book”,它应该只给出一行,包含所有大小写的总和,“book”或“book”或“book”,我的意思是忽略这个词是如何写的谢谢编辑@jez!扩展在我的脑海中没有:)它可以工作,但它是区分大小写的,它不应该对“book”和“book”有任何区别,如何改变它?它给了我两行,一行是“book”,另一行是“book”,它应该只给一行所有大小写的总和,“book”或“book”或“book”,我的意思是忽略这个词的书写方式