获取与关键字匹配的每个数据框单元格的内容

时间:2019-06-29 20:00:55

标签: python pandas dataframe

搜索数据框的每个单元格并查看该单元格是否包含关键字列表中的值的正确方法是什么?下面的示例很短...真正的datafarame可以具有任意数量的列/行并包含null。我知道这是不正确的,但是起点在这里:

import pandas as pd

myKeywords = ['apple', 'banana', 'orange']
myData = [['apple',10],['coconut',12],['donut',13],['I love apples',13]]
myDf = pd.DataFrame(myData,columns=['colOne','colN'],dtype=float)
print myDf

def findAll(keywordList, df):
  return df[(df.values.ravel() in keywordList).reshape(df.shape).any(1)]

result = findAll(myKeys, myDf)
print result

#我希望它仅显示值“苹果”和“我爱苹果”

1 个答案:

答案 0 :(得分:1)

我使用df.values.ravel().astype(str)从所有单元格中获取所有值作为常规列表,然后根据any对其进行过滤,以查看关键字是否是某个值的子字符串。

尝试一下:

import pandas as pd

myKeywords = ['apple', 'banana', 'orange']
myData = [['apple',10],['coconut',12],['donut',13],['I love apples',13]]
myDf = pd.DataFrame(myData,columns=['colOne','colN'],dtype=float)

def findAll(keywordList, df):
    return [value for value in df.values.ravel().astype(str) if any(word in value for word in keywordList)]

result = findAll(myKeywords, myDf)
print(result)

输出:

  

['苹果','我爱苹果']