搜索数据框的每个单元格并查看该单元格是否包含关键字列表中的值的正确方法是什么?下面的示例很短...真正的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
#我希望它仅显示值“苹果”和“我爱苹果”
答案 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)
输出:
['苹果','我爱苹果']