我试图在数据帧中找到给定单词的概率,但我得到一个AttributeError:’Series’对象在我当前的设置中没有属性’columns’错误.希望你能帮我找到错误的位置.
我开始使用类似于下面的数据框,并使用以下函数对其进行转换以查找每个单词的总计数.
query count foo bar 10 super 8 foo 4 super foo bar 2
功能如下:
def _words(df): return df['query'].str.get_dummies(sep=' ').T.dot(df['count'])
导致下面的df(注意’foo’是16,因为它在整个df中出现16次):
bar 12 foo 16 super 10
当尝试在df中找到给定关键字的概率时会出现问题,该关键字当前不附加列名.下面是我目前正在使用的内容,但是抛出“AttributeError:’Series’对象没有属性’columns’”错误.
def _probability(df,query): return df[query] / df.groupby['count'].sum()
我希望调用_probability(df,’foo’)将返回0.421052632(16 /(12 16 10)).提前致谢!
解决方法
你可以在它的末尾扔一个管道:
df['query'].str.get_dummies(sep=' ').T.dot(df['count']).pipe(lambda x: x / x.sum()) bar 0.315789 foo 0.421053 super 0.263158 dtype: float64
从头开始:
这更复杂但更快
from numpy.core.defchararray import count q = df['query'].values c = df['count'].values.repeat(count(q.astype(str),' ') + 1) f,u = pd.factorize(' '.join(q.tolist()).split()) b = np.bincount(f,c) pd.Series(b / b.sum(),u) foo 0.421053 bar 0.315789 super 0.263158 dtype: float64
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。