我尝试使用any()检查该列是否包含列表中的任何字符串,并生成一个包含相应结果的新列
df_data = pd.DataFrame({'A':[2,1,3], 'animals': ['cat, frog', 'kitten, fish', 'frog2, fish']})
cats = ['kitten', 'cat']
df_data['cats'] = df_data.apply(lambda row: True if any(item in cats for item in row['animals']) else False, axis = 1)
我得到了这些结果,我不明白为什么前两行是假的:
A animals cats
0 2 cat, frog False
1 1 kitten, fish False
2 3 frog2, fish False
我只希望最后一行为假
对于pandas,您应该尽量不使用for循环或apply,我使用的是带有
isin
和any
的DataFrame
构造函数翻转你的iterables
如果你仔细看
将在
cats
上迭代并查看该项是否在row['animals']
将遍历
row['animals']
,并查看row['animals']
的值是否在cats列表中相关问题 更多 >
编程相关推荐