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

2024-06-08 15:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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的数组中并返回该行


Tags: 数据字符串dataframedfdatastring情况column
2条回答

我们还可以使用:

df[df['column_2'].apply(pd.Series).eq(string_1).any(axis=1)]

^{}^{}^{}的另一种方法

df[df['column_2'].explode().eq(string_1).any(level = 0)]

输出

   column_1            column_2
0         1  [lala, lili, lele]

使用^{}in来检查列表中的成员身份:

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]

另一种解决方案是通过^{}^{}创建辅助数据帧并测试每行至少一个匹配:

df1 = df[pd.DataFrame(df['column_2'].tolist(), index=df.index).eq(string_1).any(axis=1)]
print (df1)
   column_1            column_2
0         1  [lala, lili, lele]

相关问题 更多 >