【发布时间】:2017-09-12 14:05:36
【问题描述】:
这个问题是基于我提出的另一个问题,我没有完全涵盖这个问题:Pandas - check if a string column contains a pair of strings
这是问题的修改版本。
我有两个数据框:
df1 = pd.DataFrame({'consumption':['squirrel ate apple', 'monkey likes apple',
'monkey banana gets', 'badger gets banana', 'giraffe eats grass', 'badger apple loves', 'elephant is huge', 'elephant eats banana tree', 'squirrel digs in grass']})
df2 = pd.DataFrame({'food':['apple', 'apple', 'banana', 'banana'],
'creature':['squirrel', 'badger', 'monkey', 'elephant']})
目标是测试 df1.consumptions 中是否存在 df.food:df.creature 对。
上例中该测试的预期答案是:
['True', 'False', 'True', 'False', 'False', 'True', 'False', 'True', 'False']
模式是:
松鼠吃了苹果=真,因为松鼠和苹果是一对。 猴子喜欢苹果 = False,因为猴子和苹果不是我们要找的一对。
我正在考虑构建一个包含对值数据帧的字典,其中每个数据帧将用于一个生物,例如松鼠、猴子等,然后使用 np.where 创建一个布尔表达式并执行 str.contains。
不确定这是否是最简单的方法。
【问题讨论】:
标签: python pandas string-matching boolean-expression