【发布时间】:2019-04-09 08:51:02
【问题描述】:
我正在使用 Python 中的 applymap 将特定关键字与文本数据进行映射。假设我想检查关键字“hello”与所有行的文本数据匹配的频率。 Applymap 为我提供了所需的矩阵结果,但只有“真”或“假”而不是出现次数。
我尝试将 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) 替换为出现次数,例如上面显示的所需输出。
【问题讨论】:
-
欢迎来到 StackOverflow。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。
-
要计算某些元素,您可以使用直方图程序。见:pandas.pydata.org/pandas-docs/stable/reference/api/…
-
您可能需要考虑
map是python 的build-in name。在您的脚本中,您基本上会覆盖其内置函数。最好使用 result。
标签: python pandas count python-applymap