Количество слов в строке по группам, используя pandas python - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу получить 20 самых популярных слов вместе со счетчиками по имени standard_supplier_name

. Вот как выглядит мой фрейм данных: https://i.stack.imgur.com/kOrjz.png

Я хочу мой вывод будет выглядеть так: https://i.stack.imgur.com/07iaA.png

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Давайте попробуем это:

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
0 голосов
/ 05 февраля 2020

Это мое лучшее предположение о том, чего вы пытаетесь достичь.

В будущем постарайтесь предоставить наборы данных и минимальный воспроизводимый пример.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...