python dataframe计算单词出现次数



我在这里找了很多,我找不到答案。我有一个带有列"描述"的数据框架。它包含一个长字符串,我正在计算一个特定单词"餐馆"出现的次数,

df['has_restaurants'] = 0
for index,text in enumerate(df['Description']):
text = text.split()
df['has_restaurants'][index] = (sum(map(lambda count : 1 if 'restaurant' in count else 0, text)))

做了上面的工作,它工作了,但它看起来不像一个好方法,它产生了这个"error":

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
df['has_restaurants'][index] = (sum(map(lambda count : 1 if 'restaurant' in count else 0, text)))

您可以通过使用.str.count方法来简化,考虑以下简单示例

import pandas as pd
df = pd.DataFrame({"description":["ABC DEF GHI","ABC ABC ABC","XYZ XYZ XYZ"]})
df['ABC_count'] = df.description.str.count("ABC")
print(df)

输出
description  ABC_count
0  ABC DEF GHI          1
1  ABC ABC ABC          3
2  XYZ XYZ XYZ          0

您可以使用Python的本地.count()方法:

df['has_restaurants'] = 0
for index,text in enumerate(df['Description']):
df['has_restaurants'][index] = text.count('restaurant')

最新更新