Python:在集合过滤器上操作的熊猫数据框上选择值?

扎眼的阳光 python 189

原文标题Python: Select values on pandas dataframe operating on set filters?

我正在研究这种熊猫数据框:

           0       1   2  3
1        {1}     p→q  {}  A
2  {2, 3, 4}      ¬q  {}  A
3     {2, 6}      ¬q  {}  A
4        {3}  ¬ (¬p)  {}  A
5        {4}      ¬p  {}  A

我现在的目标是获得一些通用的选择语句,它能够找到满足以下两个条件的第一行:

  • 第 1 列等于某个特定值,例如¬q
  • 第 0 列是某个特定值的子集,例如{5,6,2}

到目前为止我的代码:

import pandas as pd

example = {1: [{1}, 'p→q', set(), 'A'], 2: [{2,3,4}, '¬q', set(), 'A'], 3: [{2,6}, '¬q', set(), 'A'], 4: [{3}, '¬ (¬p)', set(), 'A'], 5: [{4}, '¬p', set(), 'A']}

origin = {5,6,2}

select = []

example = pd.DataFrame(example).transpose()

print(example)


select.append(example.loc[(example[1] == '¬q' &
                           example[0].issubset(origin)
                        )])

print select

最后一条语句中的错误消息:

AttributeError: 'Series' object has no attribute 'issubset'

如果您能解释一下,我将不胜感激,我如何解决问题以及为什么它不适用于 loc,类似于那个教程?

原文链接:https://stackoverflow.com//questions/71919909/python-select-values-on-pandas-dataframe-operating-on-set-filters

回复

我来回复
  • jezrael的头像
    jezrael 评论

    采用:

    select.append(example.loc[(example[1] == '¬q') &
                               example[0].apply(lambda x: x.issubset(origin))
                        ])
    print (select)
    [        0   1   2  3
    3  {2, 6}  ¬q  {}  A]
    
    2年前 0条评论