Python 如何检入元素是否位于数组列中

Python 如何检入元素是否位于数组列中,python,pandas,Python,Pandas,我正面临这种情况 假设我有这个数据帧 data = [{'column_1': 1, 'column_2': ['lala', 'lili', 'lele']},{'column_1': 5, 'column_2':['lala', 'lili', 'lolo']}] df = pd.DataFrame(data) df column_1 column_2 0 1 [lala, lili, lele] 1 5 [lala, lili

我正面临这种情况 假设我有这个数据帧

data = [{'column_1': 1, 'column_2': ['lala', 'lili', 'lele']},{'column_1': 5, 'column_2':['lala', 'lili', 'lolo']}]
df = pd.DataFrame(data)
df
   column_1            column_2
0         1  [lala, lili, lele]
1         5  [lala, lili, lolo]
我有三根弦

string_1 = 'lele'

string_2 = 'lulu'

string_3 = 'lolo'
如何检查字符串_1是否在列_2的数组中并返回该行

与中的
一起使用
检查列表中的成员:

string_1 = 'lele'

df1 = df[df['column_2'].apply(lambda x: string_1 in x)]
#alternative
#df1 = df[[string_1 in x for x in df['column_2']]]
print (df1)
   column_1            column_2
0         1  [lala, lili, lele]
另一种解决方案是创建辅助数据框,并通过和测试每行至少一个匹配项:

我们还可以使用:

df[df['column_2'].apply(pd.Series).eq(string_1).any(axis=1)]
和的另一种方法

输出

   column_1            column_2
0         1  [lala, lili, lele]

谢谢你的回答!你救了我一天。还有一个问题,在性能、最佳实践等方面,哪种方法更理想。。。。?对我来说,通过列表理解来阅读过滤器似乎更容易,但我不知道它是否正确。再次感谢@CapiHidalgo-如果性能很重要,那么最后一个解决方案是这里的最佳选择。谢谢你的回答,@jezrael在他的编辑中指出了相同的解决方案:)或者只是
df[df['column_2'].explode().eq(string_1).any(level=0)]
:@anky 91我不知道为什么我认为这只适用于
multi-index
。我想我永远不会忘记:)
df[df['column_2'].explode().eq(string_1).any(level = 0)]
   column_1            column_2
0         1  [lala, lili, lele]