Считайте вхождения букв в слове пандам DataFrame - PullRequest
3 голосов
/ 15 апреля 2019

У меня есть датафрейм pandas со словами в первом столбце.Я хочу создать столбцы в одном и том же фрейме данных с количеством вхождений каждой буквы в каждом слове.

Фрейм данных должен выглядеть примерно так:

Word    A    B    C    D    E  ...  
BED     0    1    0    1    1 

Есть ли простой способ сделать этои обновить его для новых слов, добавленных в фрейм данных?Он должен создать столбец для письма, если он не существует

Я пробовал это -

for i in range(len(df)):
   u = df.iat[i, 0]
   for j in u:
      df.iat[i, j] = u.count(j)

Не работает ...

1 Ответ

4 голосов
/ 15 апреля 2019

Вы можете использовать collections.Counter в понимании списка, а затем переиндексировать, используя string.ascii_uppercase:

from collections import Counter
from string import ascii_uppercase

df = df[['Word']].join(pd.DataFrame([Counter(word) for word in df['Word'].str.upper()])
                       .reindex(list(ascii_uppercase), axis=1).fillna(0).astype(int))

[output]

print(df)

  Word  A  B  C  D  E  F  G  H  I  ...  Q  R  S  T  U  V  W  X  Y  Z
0  BED  0  1  0  1  1  0  0  0  0  ...  0  0  0  0  0  0  0  0  0  0

[1 rows x 27 columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...