Python 按单元中的元素进行切片

Python 按单元中的元素进行切片,python,pandas,slice,Python,Pandas,Slice,通过在单元格中查找单个元素进行切片的最佳方法是什么?我知道如何使用.isin()函数,其中单元格元素位于列表中。但我实际上在寻找相反的结果: id vals 1 ['wow', 'very', 'such'] 2 ['wow', 'such'] 3 ['very', 'such'] 我想要这样的东西(但这个不行): 我认为另一种方法是使用apply(),匹配值,但这似乎有点不雅观。a列表理解选择只包含字符串的行,可以使用: df[['ver

通过在单元格中查找单个元素进行切片的最佳方法是什么?我知道如何使用.isin()函数,其中单元格元素位于列表中。但我实际上在寻找相反的结果:

id       vals
1        ['wow', 'very', 'such']
2        ['wow', 'such']
3        ['very', 'such']
我想要这样的东西(但这个不行):


我认为另一种方法是使用apply(),匹配值,但这似乎有点不雅观。

a
列表理解
选择只包含字符串的行,可以使用:

df[['very' in x for x in df['vals'].values]]

是否要匹配包含<代码>交付的字符串(其中<代码>非常是子字符串)?PS:根据OP编辑的注释,熊猫中不雅的地方可能是将列表对象存储在数据帧中。要考虑的一个选项是将列表拆分为列并与之一起工作。同时,申请并不是不雅观的。谢谢你的意见。如果可能的单词列表在10000s中会怎样?你有10000s列,那会有什么问题?我觉得用这样一个稀疏的表进行可视化解释会更困难。我不确定在10k水平列表和10k列水平标量之间进行可视化会有多困难。但这是一个平衡的选择:你没有标量意味着你阻止你的代码使用所有的pandas特性,因此你必须使用apply。
df[['very' in x for x in df['vals'].values]]
df[df.vals.apply(lambda x: 'very' in x)]
Out[9]: 
                vals
0  [wow, very, such]
2       [very, such]