У меня есть файл TSV, который я загрузил в кадр данных pandas для некоторой предварительной обработки, и я хочу выяснить, в каких строках есть вопрос, и вывести 1 или 0 в новом столбце.Поскольку это TSV, вот как я его загружаю:
import pandas as pd
df = pd.read_csv('queries-10k-txt-backup', sep='\t')
Вот пример того, как это выглядит:
QUERY FREQ
0 hindi movies for adults 595
1 are panda dogs real 383
2 asuedraw winning numbers 478
3 sentry replacement keys 608
4 rebuilding nicad battery packs 541
После удаления пустых строк, дубликатов иВ столбце FREQ (для этого не требуется) я написал простую функцию, чтобы проверить столбец QUERY, чтобы увидеть, содержит ли он какие-либо слова, которые ставят строку в вопрос:
df_test = df.drop_duplicates()
df_test = df_test.dropna()
df_test = df_test.drop(['FREQ'], axis = 1)
def questions(row):
questions_list =
["what","when","where","which","who","whom","whose","why","why don't",
"how","how far","how long","how many","how much","how old","how come","?"]
if row['QUERY'] in questions_list:
return 1
else:
return 0
df_test['QUESTIONS'] = df_test.apply(questions, axis=1)
Но как только я проверяю новый фрейм данных, хотя он создает новый столбец, все значения равны 0. Я не уверен, что моя логика неверна в функции, я использовал что-то похожее со столбцами данных, которые содержат только одно слово, и, если оно совпадает, это 'Я выведу 1 или 0. Однако та же самая логика, кажется, не работает, когда столбец содержит фразу / предложение, как этот вариант использования.Любой вклад действительно ценится!