Python 在列表的列表中筛选
我有一个数据框,其中包含一列的列表。 范例 我想在值为1、2或3时选择行。 我想在列表中这样做,这样我可以像这样过滤:Python 在列表的列表中筛选,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据框,其中包含一列的列表。 范例 我想在值为1、2或3时选择行。 我想在列表中这样做,这样我可以像这样过滤: filter = [1,2,3] df_new = df[df[column] is in filter] 然而,它回报了我 “序列的真值不明确。” 如果我尝试这样做: filter = [1,2,3] df_new = df[df[column].isin(filter)] 它还我 返回了一个带有错误集的结果 我试着用任何一种,但在这里似乎不起作用。 我还查看了使用np.
filter = [1,2,3]
df_new = df[df[column] is in filter]
然而,它回报了我
“序列的真值不明确。”
如果我尝试这样做:
filter = [1,2,3]
df_new = df[df[column].isin(filter)]
它还我
返回了一个带有错误集的结果
我试着用任何一种,但在这里似乎不起作用。
我还查看了使用np.select或使用管道“|”发布的不同线程,但它在这里并不真正适用。是吗?
有什么建议吗
简化示例数据帧:
column
0 [1,2]
1 [3,4]
2 [5]
3 []
4 [7,8]
5 [5,3]
预期输出(过滤1、2或3):
除非你需要更复杂的东西,否则你很接近你在熊猫中的表现
df.loc[df[column].isin([filter])]
您可以使用在创建布尔掩码的列上应用自定义函数。此自定义函数检查系列的每个单独项,以查找此项中是否有任何元素也存在于筛选器列表中
使用:
这张照片是:
column
0 [1, 2]
1 [3, 4]
5 [5, 3]
您可以分享一个示例输入和预期输出吗?我看到了这个错误:返回了一个带有错误集的结果,我在尝试以下方法时也看到了:selection=df[df['column'].isin(filter)]列中存储的值是列表吗?太棒了!非常感谢你。我正在考虑申请,但它看起来不像这样优雅。对于最终的输出,我做了df_new=df[m],效果非常好。
df.loc[df[column].isin([filter])]
lst = [1, 2, 3] # filter list
m = df[column].apply(lambda s: len(set(s) & set(lst)) > 0)
print(df[m])
column
0 [1, 2]
1 [3, 4]
5 [5, 3]