计算单词到熊猫DataFrame中字母的出现次数

时间:2019-04-14 21:05:29

标签: python python-3.x pandas dataframe

我在第一列中有一个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 个答案:

答案 0 :(得分:4)

您可以在列表理解中使用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))

[输出]

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]