Поиск ключевых слов в столбце и добавление этих ключевых слов в новый столбец в той же строке - PullRequest
1 голос
/ 10 февраля 2020

Я новичок в python, и это мой первый пост о переполнении стека. У меня есть список ключевых слов и фрейм данных, содержащий несколько столбцов.

Я хочу найти эти ключевые слова в определенном столбце и написать ключевое слово, которое появляется против него.

Это то, что я делаю. Мой код

Это ошибка, которую я получаю. l oop с ошибкой

Это то, что я хочу получить. Желаемый результат

Пожалуйста, помогите выяснить, что идет не так, или предложите лучший способ сделать это. Спасибо! Написание приведенного ниже кода поможет вам упростить процесс.

import pandas as pd

keywords = ["hello","hi","greetings","wassup"]

data = ["hello, my name is Harry", "Hi I am John", "Yo! Wassup", "Greetings fellow traveller","Hey im 
Henry", "Hello there General Kenobi"]

df = pd.DataFrame(data,columns = ['strings'])

df['Keywords'] = ""

df2 = pd.DataFrame(data = None, columns = df.columns)

for word in keywords:
     temp = df[df['strings'].str.contains(word,na = False)]
     temp.reset_index(drop = True)
     temp['Keywords'] = word
     df2.append(temp)

Ошибка:

C: \ Users \ harka \ Anaconda3 \ lib \ site-packages \ ipykernel_launcher.py: 5 : SettingWithCopyWarning: значение пытается быть установлено для копии среза из DataFrame. Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение

См. Предупреждения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing -view-vers--copy"" "

1 Ответ

0 голосов
/ 10 февраля 2020

Я добавил 'Yo', чтобы показать, что он может возвращать несколько строк

import pandas as pd

def keyword(row):
  strings = row['strings']
  keywords = ["hello","hi","greetings","wassup",'yo']
  keyword = [key for key in keywords if key.upper() in strings.upper()]
  return keyword

data = ["hello, my name is Harry", "Hi I am John", "Yo! Wassup", "Greetings fellow traveller","Hey im Henry", "Hello there General Kenobi"]

df = pd.DataFrame(data,columns = ['strings'])
df['keyword'] = df.apply(keyword, axis=1)

, если вам не нравится возвращаемый список строк, то, возможно, строка, разделенная запятыми?

import pandas as pd

def keyword(row):
  strings = row['strings']
  keywords = ["hello","hi","greetings","wassup",'yo']
  keyword = [key for key in keywords if key.upper() in strings.upper()]
  return ','.join(keyword)

data = ["hello, my name is Harry", "Hi I am John", "Yo! Wassup", "Greetings fellow traveller","Hey im Henry", "Hello there General Kenobi"]

df = pd.DataFrame(data,columns = ['strings'])
df['keyword'] = df.apply(keyword, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...