我在第一列中有一个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)
不起作用...
答案 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]