Определите значение по нескольким столбцам в кадре данных, которые содержат строку из списка в Python - PullRequest
0 голосов
/ 09 мая 2018

У меня есть датафрейм с несколькими столбцами, содержащими фразы. Что я хотел бы сделать, это

  1. идентифицирует столбец (для наблюдения за строкой), который содержит строку, которая существует в предварительно составленном списке слов.
  2. С этой информацией создайте новую переменную в этом кадре данных, которая содержит значение в столбце, который соответствует списку. (В этом примере «lst» - мой список слов)

Например: стартовый фрейм данных:

starting data

И я хотел бы закончить с этим:

final dataframe

New_var - новая переменная, и она выбрала ответ в столбце наблюдения 1, потому что «яблоко» в яблочном соусе совпало с «яблоком» в списке. Большие апельсины появятся для Observation 2, потому что они совпадают с «апельсинами» из списка.

Я попытался сделать это со списком по этой ссылке: Понимание списка , но безуспешно. Я хочу сделать это в Python. Какие-либо предложения? Я относительно новичок в этом языке программирования.

Большое спасибо. Если я разместил сообщение не по назначению или где-то есть ответ, я его не нашел, я ценю любые указания в правильном направлении.

1 Ответ

0 голосов
/ 09 мая 2018

Давайте возьмем список слов и фрейм данных, как вы упомянули

lst = ['a','m','n','o','p']

df = pd.DataFrame({'Observation': [1], 'col1': ['ab'], 'col2': ['dc'], 'col3': ['ef'], 'col4': ['yz']})
df
   Observation  col1    col2    col3    col4
  0    1         ab      dc      ef      yz

Проверьте, соответствуют ли значения фрейма данных значениям в списке

df['New_var'] = [x for x in df.values[0] if any(b for b in lst if b in str(x))]
df
   Observation  col1    col2    col3    col4    New_var
  0        1     ab      dc      ef      yz       ab
...