Примените NLTK для определения столбца / индекса панд - PullRequest
0 голосов
/ 08 июня 2018

Я хочу ограничить столбцы и индекс DataFrame чем-то вроде этого

ps = PorterStemmer()
df_dic = pd.read_csv('inquirerbasic_clean.csv', sep=';', index_col=0).T
print(type(df_dic))  # pandas.core.frame.DataFrame
df_dic.index = ps.stem(df_dic.index.str.lower())
df_dic.columns = ps.stem(df_dic.columns.str.lower())

, и я получаю эту ошибку:

  File "<ipython-input-18-0156717e5956>", line 5, in <module>
    df_dic.index = ps.stem(df_dic.index.str.lower())

  File "/usr/lib/python3.6/site-packages/nltk/stem/porter.py", line 632, in stem
    stem = self.stem_word(word.lower(), 0, len(word) - 1)

AttributeError: 'Index' object has no attribute 'lower'

Кроме того, если я преобразую индекс всписок:

ps.stem(list(df_dic.index.str.lower()))

Я получаю эквивалентное сообщение об ошибке:

  File "/usr/lib/python3.6/site-packages/nltk/stem/porter.py", line 632, in stem
    stem = self.stem_word(word.lower(), 0, len(word) - 1)

AttributeError: 'list' object has no attribute 'lower'

Итак, как я могу их остановить?

1 Ответ

0 голосов
/ 08 июня 2018

Они работают со строками, а не списками, поэтому примените ps.stem, используя map.

df_dic.index = df_dic.index.str.lower().map(ps.stem)
df_dic.columns = df_dic.columns.str.lower().map(ps.stem)

Если вам это не подходит (по какой-либо причине), используйте понимание списка:

df_dic.index = [ps.stem(v.lower()) for v in df_dic.index]

И т. Д.

...