【问题标题】:Counts of words in string by group using pandas python使用pandas python按组计算字符串中的单词数
【发布时间】:2020-05-20 19:03:00
【问题描述】:

我想按标准供应商名称获取前 20 个常用词以及计数

这是我的数据框的样子:https://i.stack.imgur.com/kOrjz.png

我希望我的输出如下所示: https://i.stack.imgur.com/07iaA.png

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 请将您的数据以文本形式发布,以便我们针对您的数据测试解决方案。

标签: python python-3.x pandas dataframe nlp


【解决方案1】:

让我们试试这个:

df = pd.DataFrame({'standard_supplier_name':['ibl america', 'b.v. shie van'], 
                  'index':['aa, human, tag, bachulovius,slam, family, member, aa , human,tag',
                         'aanbrengen, looproute, bij']})

df = df.set_index('index')

#input df

df.reset_index()\
  .set_index('standard_supplier_name')['index'].str.split(',')\
  .explode().str.strip().value_counts()

输出:

human          2
tag            2
aa             2
looproute      1
bij            1
aanbrengen     1
member         1
family         1
bachulovius    1
slam           1
Name: index, dtype: int64

【讨论】:

    【解决方案2】:

    这是我对您要达到的目标的最佳猜测。

    未来,尽量提供数据集,以及一个最小可重复的例子。

    desc = ["aa, bc, cd, cd, aa, bb", "xy, jk, yb"]
    comp = ["abc", "xyz"]
    
    df = pd.DataFrame({"comp": comp, "desc":desc})
    #split words into tokens
    df["desc"] = df.desc.str.split(", ")
    #stack words per group
    stacked = pd.DataFrame(df.desc.tolist(), index=df.comp).stack().reset_index()
    stacked.columns = ["comp", "drop", "token"] 
    
    #group by comp and token and count occurances
    stacked.groupby(["comp","token"]).size().reset_index()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2011-09-26
      • 2021-01-09
      • 1970-01-01
      • 2019-02-13
      • 2023-03-21
      相关资源
      最近更新 更多