Как выполнить остановку и удаление столбцов в pandas dataframe в python? - PullRequest
0 голосов
/ 13 апреля 2019

Ниже приведено подмножество моего набора данных. Я пытаюсь очистить свой набор данных, используя Porter stemmer, который доступен в пакете nltk. Я хотел бы отбросить столбцы, которые похожи по своим основам, например, «отказаться», «покинуть», «отказаться» следует просто оставить в своем наборе данных. Ниже приведен код, который я пробую, где я могу увидеть слова / столбцы, которые основаны на Но я не уверен, как отбросить эти столбцы? Я уже разбил токены и удалил знаки препинания из корпуса.

Примечание: Я новичок в Python и Textmining.

Подмножество набора данных

{
   'aaaahhhs':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'aahs':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'aamir':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'aardman':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'aaron':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'abandon':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'abandoned':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'abandoning':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'abandonment':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   },
   'abandons':{
      0:0,
      1:0,
      2:0,
      3:0,
      4:0,
      5:0
   }
}

код пока ..

from nltk.stem import PorterStemmer 
from nltk.tokenize import word_tokenize   
ps = PorterStemmer() 
for w in clean_df.columns:
    print(ps.stem(w))

1 Ответ

1 голос
/ 13 апреля 2019

Я думаю, что-то вроде этого делает то, что вы хотите:

import collections

# Here the assotiations between stems and column names are built:
stems = collections.defaultdict(list)
for column_name in clean_df.columns:
    stems[ps.stem(column_name)].append(column_name)

# Here for each stem the first (in lexicographical order) is gotten:
new_columns = [sorted(columns)[0] for _, columns in stems.items()]

# Here the new `DataFrame` is created which contains selected columns:
new_df = clean_df[new_columns]
...