在包含python中列表的字符串的数据框中标识多个列的值

时间:2018-05-08 21:38:40

标签: python list dataframe matching

我有一个包含短语的多列的数据框。我想做的是

  1. 标识包含预先制作的单词列表中的字符串的列(每行观察)。
  2. 使用此信息,在此数据框中创建一个新变量,该变量包含与列表匹配的列中的值。 (在这个例子中,“lst”是我的单词列表)
  3. 例如:启动Dataframe:

    starting data

    我想最终得到这个:

    final dataframe

    New_var是新变量,它选择观察1的col1中的响应,因为苹果酱中的“apple”与列表中的“apple”匹配。观察2会出现大橙子,因为它与列表中的“橙子”相匹配。

    我尝试使用此链接中的列表理解来执行此操作: List Comprehension,但仍未成功。我希望在python中这样做。有什么建议?我对这种编程语言比较陌生。

    非常感谢你。如果我发布的内容不合适或者答案存在,我还没找到,我很欣赏任何指导方向。

1 个答案:

答案 0 :(得分:0)

让我们按照您的提及获取单词和数据框列表

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