Python 通过创建字典替换单词

Python 通过创建字典替换单词,python,pandas,nltk,Python,Pandas,Nltk,我有一个要在数据集中替换的单词列表: my_dict = { "positivi": "positivo", "positiva": "positivo", "lavori": "lavoro", "nuova":"nuovo", "nuovi": "nuovo", &quo

我有一个要在数据集中替换的单词列表:

my_dict = {
  "positivi": "positivo",
  "positiva": "positivo",
  "lavori": "lavoro",
  "nuova":"nuovo",
  "nuovi": "nuovo",
  "nuove": "nuovo",
    
}
为了做到这一点,我尝试了以下方法:

import nltk

a = df['Title'].str.lower().str.cat(sep=' ')
words = nltk.tokenize.word_tokenize(a)
word_dist = nltk.FreqDist(words)

df_1 = pd.DataFrame(word_dist.most_common(1000),
                    columns=['Word', 'Frequency'])

df_1 = df_1.Word.replace(my_dict,inplace=True) # the problem is here. This returns an empty df_1

df_1 = df_1[df_1['Word'].str.len()>3]

list_of_words=["dopo","entro","fare","fanno","loro","indietro","insieme","avranno","7115","allo","anche","cosa","dalle","dall","dagli","dentro","secondo","sempre",'siamo','sarà','sarebbe','troppi','tutti','verso','sotto','stesso','sulle','2018','ogni','oggi','nell','nelle','niente','queste','meno','alle','sulla','contro','come','per', 'della','sono','dell','solo','quali','quasi','ecco','ancora']

df_1 = df_1.groupby(['Word'], as_index=False).sum()
df_1 = df_1[~ df_1.Word.str.contains('|'.join(list_of_words), case=False)]

df_1.sort_values(by=['Frequency'], ascending=False).to_csv("path/my_dict.csv")
然而,它并不能取代文本中的任何内容。例如:

Title 

Una notizia positiva dopo tanto tempo 
Quali lavori svolgi?
我希望用csv创建一个新的词典,其中包含替换的单词和新的频率。但实际上我打印的是同样的旧列表

你能告诉我代码中有什么错误吗

一些数据样本

0      Torna la domenica al museo: l'iniziativa positiva...
1      Torino, lettera di un boss ai giovani: “Non f...
2      Gli studenti italiani non capiscono i lavori...
3      Offerte nuovi lavori: le principali posizion...
                             ...        

           

我猜这个问题是正确的。这将更新原地的日期框,但不返回任何内容

我不知道是否还有其他问题,如果没有df的样本数据,我无法进行测试

import nltk
nltk.download('punkt')

import pandas as pd

data = (['Torna la domenica al museo: l\'iniziativa positiva',
'Torino, lettera di un boss ai giovani: “Non f...',
'Gli studenti italiani non capiscono i lavori...',
'Offerte nuovi lavori: le principali posizion...'])

my_dict = {
  "positivi": "positivo",
  "positiva": "positivo",
  "lavori": "lavoro",
  "nuova":"nuovo",
  "nuovi": "nuovo",
  "nuove": "nuovo",
    
}

df = pd.DataFrame(data, columns=['Title'])        

a = df['Title'].str.lower().str.cat(sep=' ')
words = nltk.tokenize.word_tokenize(a)
word_dist = nltk.FreqDist(words)

df_1 = pd.DataFrame(word_dist.most_common(1000),
                    columns=['Word', 'Frequency'])

df_1.Word = df_1.Word.replace(my_dict)

df_1 = df_1[df_1['Word'].str.len()>3]

list_of_words=["dopo","entro","fare","fanno","loro","indietro","insieme","avranno","7115","allo","anche","cosa","dalle","dall","dagli","dentro","secondo","sempre",'siamo','sarà','sarebbe','troppi','tutti','verso','sotto','stesso','sulle','2018','ogni','oggi','nell','nelle','niente','queste','meno','alle','sulla','contro','come','per', 'della','sono','dell','solo','quali','quasi','ecco','ancora']

df_1 = df_1.groupby(['Word'], as_index=False).sum()
df_1 = df_1[~ df_1.Word.str.contains('|'.join(list_of_words), case=False)]

df_1.sort_values(by=['Frequency'], ascending=False).to_csv("64671179.csv")
csv文件包含:

,Word,Frequency
6,lavoro,2
0,boss,1
9,nuovo,1
15,torino,1
14,studenti,1
13,principali,1
12,posizion,1
11,positivo,1
10,offerte,1
8,museo,1

此步骤出错:
df\u 1=df\u 1.Word.replace(my\u dict,inplace=True)
。这将返回一个空的df_1,因为它给了我一个空的数据帧。谢谢B.Bogart。如何将列重命名为Word?如果我不使用inplace,我不能在之后调用它。对,对不起。我用一个可能性更新了答案。另一种方法是使用inplace=True,但不将其分配给df_1。谢谢B.Bogart。不幸的是,它似乎仍然没有用字典中重新定义的单词更新csv文件。似乎我没有更新df_1。你发现了任何不一致的地方吗?我什么都看不见:(你能提供样本数据吗?用测试的东西测试会容易得多。我提供了一些数据。请看问题。谢谢你的帮助B.博加特