#python #pandas #nltk
#python #pandas #nltk
Вопрос:
Я добавляю несколько наборов данных вместе, к сожалению, при сборе данных некоторые сборщики данных добавили перевод к английскому вопросу.
df[‘Как вас зовут’] сообщается в других наборах данных как df [‘Как вас зовут, Комо те ламы’]
В идеале, я бы хотел только df[‘Как вас зовут’]
Это верно для столбца name, как и для многих других столбцов (возраст, жилье и т.д. и т.п.).
Я использую nltk, чтобы избавиться от всех неанглийских слов в именах столбцов, используя следующий код:
df_t.columns = " ".join(w for w in nltk.wordpunct_tokenize(df_t.columns)
if w.lower() in words or not w.isalpha())
Но я получаю следующую ошибку error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-65a4c079ba1a> in <module>()
34 df_t['File Name'] = df_t['File Name'].str.strip().str[-30:]
35 df_t.columns = df_t.columns.str.replace(r'(^.*female.*$)', 'n_female_workers')
---> 36 df_t.columns = " ".join(w for w in nltk.wordpunct_tokenize(df_t.columns) if w.lower() in words or not w.isalpha())
37
38 list_month.append(df_t)
~Anaconda3libsite-packagesnltktokenizeregexp.py in tokenize(self, text)
129 # If our regexp matches tokens, use re.findall:
130 else:
--> 131 return self._regexp.findall(text)
132
133 def span_tokenize(self, text):
TypeError: expected string or bytes-like object
Как это решить?
Комментарии:
1.
nltk.wordpunct_tokenize
требуетсяstr
объект в качестве аргумента, вы передаете емуpd.Series
2. да, я чувствовал, что это так, не могли бы вы знать, как исправить код?
3. jezrael, к сожалению, возвращает ту же ошибку..
Ответ №1:
Я думаю, вам нужен цикл по именам столбцов для передачи скалярной string
функции в wordpunct_tokenize
:
df_t = pd.DataFrame(columns=['What is your name Como te llamas'])
words = ['what','is','your','name']
df_t.columns = [" ".join(w for w in nltk.wordpunct_tokenize(x)
if w.lower() in words or not w.isalpha())
for x in df_t.columns]
print (df_t)
Empty DataFrame
Columns: [What is your name]
Index: []