那么,我现在有了这样的代码:
import pandas as pd
diccionario = pd.read_csv(dict, header=0).set_index("nombre")["valor"].to_dict()
lista = ["felicidad", "paz", "día", "estoy", "isla", "alivio", "-"]
print(sum([diccionario[i] for i in lista if i in diccionario]))
让我可以比较"列表"使用key:value字典(dictionario),得到结果8。
但是,现在我想读"lista"同样从同一个谷歌表,为了能够添加更多的列表。
所以,我在这里添加了新的列表:
b = f"https://docs.google.com/spreadsheets/d/1-odw996EIUB9mo2Ad1fNh0y9QiXv7GU81COMj6g1Z-A/gviz/tq?tqx=out:csv&sheet=b"
并读取
import pandas as pd
text = pd.read_csv(b, header=0)
然后,我用NLTK
标记短语regexp = RegexpTokenizer('w+')
text['text_token']=text['frases'].apply(regexp.tokenize)
但是,一旦我使用相同的代码,我就不会收到包含每个短语求值的新列
text['suma']=(diccionariob[diccionariob['nombre'].isin(text['frases'])]['valor'].sum())
print(sum([diccionario[i] for i in lista if i in diccionario]))
结果都是0
<表类>远期 text_token suma hola la casa es bonita paz, felicidad [hola, la, casa, es, bonita, paz, felicidad] 0 pasos de gigante feliz alegria major paz [pasos, de, gigante, feliz, alegria, major] 0 是很好巴斯 (是,是,好,巴斯) 0 木栅felicidad巴斯 [felicidad木栅,巴斯] 0 表类>
您可以尝试将您的第一个方法包装到lambda函数中(假设您在名为diccionariob的字典中有所有标记化的单词)
#pass dictionary and the tokenized list as parameters
def somma(dictionary, lista):
somma = sum([dictionary[i] for i in lista if i in dictionary])
return somma
#apply the function to each row of the dataframe
text['suma']= text.apply(lambda x: somma(diccionariob, x['frases']), axis=1)