Esta es una de las primeras veces que uso Python, así que me disculpo si esta es una pregunta tonta. Tengo un CSV de 3 columnas, la primera columna llamada comentario (que es la columna que manipulé en bigrams), la segunda columna que se llama tipo de comentario y la tercera columna que se llama fecha de comentario. Estoy satisfecho con mi salida actual de este código, donde dividí la columna 1 (Comentario) en bigrams, conté las frecuencias y exporté a un archivo CSV. Pero ahora también quiero agregar el tipo de comentario y las columnas de fecha de comentario de mi csv original (sin hacer ningún cambio en ellas) a mi CSV exportado junto a las columnas de palabra y frecuencia. No estoy seguro de cómo hacerlo y probé algunas ideas, pero no funcionó.

import csv
import string
import re
from nltk.util import everygrams
import pandas as pd


from collections import Counter

from itertools import combinations

df = pd.read_csv('modified.csv', 'r', encoding="utf8",
                 names=['comment'])
top_N = 1000
stopwords = nltk.corpus.stopwords.words('english')

RE_stopwords = r'\b(?:{})\b'.format('|'.join(stopwords))

txt = df.comment.str.lower().str.replace(r'\|', ' ').str.cat(sep=' ')

words = nltk.tokenize.word_tokenize(txt)
words = [w for w in words if not w in RE_stopwords]

bigrm = list(nltk.bigrams(words))



word_dist = nltk.FreqDist([' '.join(x) for x in bigrm])
rslt = pd.DataFrame(word_dist.most_common(top_N),
                columns=['Word', 'Frequency'])

print(rslt)
rslt.to_csv('bigram3.csv')
0
Bork Hampton 15 oct. 2019 a las 11:04

1 respuesta

La mejor respuesta

Las líneas agregadas al final, crean una nueva columna en su marco de datos rslt y copian los datos de su marco de datos original a este.

import csv
import string
import re
from nltk.util import everygrams
import pandas as pd


from collections import Counter

from itertools import combinations

df = pd.read_csv('modified.csv', 'r', encoding="utf8",
                 names=['comment'])
top_N = 1000
stopwords = nltk.corpus.stopwords.words('english')

RE_stopwords = r'\b(?:{})\b'.format('|'.join(stopwords))

txt = df.comment.str.lower().str.replace(r'\|', ' ').str.cat(sep=' ')

words = nltk.tokenize.word_tokenize(txt)
words = [w for w in words if not w in RE_stopwords]

bigrm = list(nltk.bigrams(words))



word_dist = nltk.FreqDist([' '.join(x) for x in bigrm])
rslt = pd.DataFrame(word_dist.most_common(top_N),
                columns=['Word', 'Frequency'])
rslt['Column_Type'] = df['comment type']
rslt['Column_Date'] = df['comment date']
print(rslt)
rslt.to_csv('bigram3.csv')
0
Trollsors 15 oct. 2019 a las 08:11