小编Dmi*_* K.的帖子

如何过滤包含列表值的列的数据框

我们有一列中有列表的数据框。找不到简单的方法来过滤包含列表中的值的行的数据框。

df = pd.DataFrame({'lists':[['a', 'c'], ['a', 'b', 'd'], ['c', 'd']]})
Run Code Online (Sandbox Code Playgroud)

例如,我只需要在其列表中包含“a”的行。我只能通过“申请”获得它。

df[df.lists.apply(lambda x: True if 'a' in x else False)]
>>>     lists
>>>0    [a, c]
>>>1    [a, b, d]
Run Code Online (Sandbox Code Playgroud)

有没有像 .isin() 这样的东西,但反之亦然?获得所需行的最佳方法是什么?谢谢。

python list filter pandas

2
推荐指数
1
解决办法
4495
查看次数

dataframe logical_和equals工作正常,不适用于不等于

请帮助我理解为什么" 不平等 "的情况不能正常工作.

>>>d = {'a' : [1, 2, 3, 3, 1, 4],
>>>     'b' : [4, 3, 2, 1, 2, 2]}
>>>df = pd.DataFrame(d)
    a   b
0   1   4
1   2   3
2   3   2
3   3   1
4   1   2
5   4   2
Run Code Online (Sandbox Code Playgroud)

如果我使用相同的条件,我们得到正确的结果logical_and:

>>>df[np.logical_and(df['a']==3, df['b']==2)]
    a   b
2   3   2
Run Code Online (Sandbox Code Playgroud)

但是如果我们将条件改为不相等则它会停止正常工作:

>>>df[np.logical_and(df['a']!=3, df['b']!=2)]
    a   b
0   1   4
1   2   3
Run Code Online (Sandbox Code Playgroud)

这类似条件OR而不是AND.

但如果我们~之前使用它,它再次正常工作np.logical_and

>>>df[~np.logical_and(df['a']==3, df['b']==2)]
    a   b
0   1   4
1   2 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas logical-and

0
推荐指数
1
解决办法
405
查看次数

标签 统计

pandas ×2

python ×2

filter ×1

list ×1

logical-and ×1

numpy ×1