计算并映射字符串的出现次数
Count and map number of appearances of strings
我正在 Python 中使用 applymap 将特定关键字与文本数据进行映射。假设我想检查关键字 "hello" 与所有行的文本数据匹配的频率。 Applymap 给了我想要的矩阵结果,但是只有 "True" 或 "False" 而不是出现次数。
我尝试将 count() 与我的 applymap 函数连接起来,但我无法使其工作。
最小工作示例如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'text': ['hello hello', 'yes no hello', 'good morning']})
keys = ['hello']
keyword = pd.DataFrame({0:keys})
res = []
for a in df['text']:
res.append(keyword.applymap(lambda x: x in a))
map = pd.concat(res, axis=1).T
map.index = np.arange(len(map))
#Output
map
0
0 True
1 True
2 False
#Desired Output with 'hello' appearing twice in the first row, once in the second and zero in the third of df.
0
0 2
1 1
2 0
我正在寻找一种方法让我的 applymap 函数获得矩阵形式,但将 True (1) 和 False (0) 替换为出现次数,例如上面显示的所需输出。
而不是测试列表中的项目:
res.append(keyword.applymap(lambda x: x in a))
# x == a
你应该使用:
res.append(keyword.applymap(lambda x: str.count(a, x)))
# 计算 "a"
的出现次数
我正在 Python 中使用 applymap 将特定关键字与文本数据进行映射。假设我想检查关键字 "hello" 与所有行的文本数据匹配的频率。 Applymap 给了我想要的矩阵结果,但是只有 "True" 或 "False" 而不是出现次数。
我尝试将 count() 与我的 applymap 函数连接起来,但我无法使其工作。
最小工作示例如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'text': ['hello hello', 'yes no hello', 'good morning']})
keys = ['hello']
keyword = pd.DataFrame({0:keys})
res = []
for a in df['text']:
res.append(keyword.applymap(lambda x: x in a))
map = pd.concat(res, axis=1).T
map.index = np.arange(len(map))
#Output
map
0
0 True
1 True
2 False
#Desired Output with 'hello' appearing twice in the first row, once in the second and zero in the third of df.
0
0 2
1 1
2 0
我正在寻找一种方法让我的 applymap 函数获得矩阵形式,但将 True (1) 和 False (0) 替换为出现次数,例如上面显示的所需输出。
而不是测试列表中的项目:
res.append(keyword.applymap(lambda x: x in a))
# x == a
你应该使用:
res.append(keyword.applymap(lambda x: str.count(a, x)))
# 计算 "a"