对单个值执行 df.map() 或 df.merge() <str> 以返回<float>



我正试图在pandas数据帧中创建一个由5个字母组成的单词列表,该列表将单词拆分为不同的列,并为每个字母分配一个值,然后对值进行求和。以下代码导入一个.json字典并为一个字母赋值:

import json
import pandas as pd

def split(word):
return [char for char in word]

j = open('words_dictionary.json')
dictionary = json.load(j)
dictionary_db = pd.DataFrame(columns=['Word'])
letter_db = pd.DataFrame(columns=['Letter'])
word_count = 0
num_word_count = 0
letter_count = 0
for i in dictionary:
word_count += 1
if len(i) == 5:
dictionary1_db = pd.DataFrame({i}, columns=['Word'])
dictionary_db = pd.concat([dictionary1_db, dictionary_db], ignore_index=True, axis=0)
num_word_count += 1
split_word = split(i)
L1 = split_word[0]
L2 = split_word[1]
L3 = split_word[2]
L4 = split_word[3]
L5 = split_word[4]
for s in split_word:
letter_count += 1
letter1_db = pd.DataFrame({s}, columns=['Letter'])
letter_db = pd.concat([letter_db, letter1_db], ignore_index=True, axis=0)
grouped = letter_db.groupby('Letter').value_counts()
grouped_db = pd.DataFrame(grouped, columns=['Value'])
grouped_db = grouped_db.apply(lambda x: (x/num_word_count)*.2, axis=1)
grouped_dict = grouped_db.to_dict()

导致分组ed_db为:

012

您可以按如下方式合并两个数据帧:

df.merge(grouped_db, left_on="L1", right_on="Letter")

L1列和Letter列将是多余的,但您可以稍后过滤掉其中一列。

最新更新