首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表理解以检查真值

列表理解以检查真值
EN

Stack Overflow用户
提问于 2020-08-11 11:35:48
回答 3查看 438关注 0票数 2

我有一个DataFrame和一个列表。DataFrame中与列表中的项不匹配的每个项都应该设置为None。我编写了一个列表理解,它应该检查列表中的条目是否为True,在这种情况下,应该将DataFrame的项设置为None。谁能解释我为什么得到ValueError。我尝试了从ValueError中推荐的方法,但是它们没有起作用。

我的守则:

代码语言:javascript
复制
abc = ['A', 'B', 'C']
l = ['A', 'B', 'None', '5-20', 'C', '200-500', 'D', '1000', 'A']
l = pd.DataFrame(l)

[None for i in l if ~l[i].isin(abc) == True]
       
print(l)

输出:

代码语言:javascript
复制
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all() 

预期结果:

代码语言:javascript
复制
      0
0     A
1     B
2  None
3  None
4     C
5  None
6  None
7  None
8     A
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-11 11:41:12

可以将isin与布尔索引结合使用。

代码语言:javascript
复制
l[~l.isin(abc)] = None
l
      0
0     A
1     B
2  None
3  None
4     C
5  None
6  None
7  None
8     A

isin将返回True,如果项包含在给定的序列中,则为每一行数据labc

代码语言:javascript
复制
l.isin(abc)
       0
0   True
1   True
2  False
3  False
4   True
5  False
6  False
7  False
8   True

在这里,我们希望设置None,其中值是False (其中的值与列表不匹配),因此我们将使用Bitwise (~)来逆它,以便以后我们可以使用它进行布尔索引。

代码语言:javascript
复制
~l.isin(abc)
       0
0  False
1  False
2   True
3   True
4  False
5   True
6   True
7   True
8  False

然后使用None简单地设置为布尔索引

代码语言:javascript
复制
l[~l.isin(abc)] = None
l
      0
0     A
1     B
2  None
3  None
4     C
5  None
6  None
7  None
8     A
票数 5
EN

Stack Overflow用户

发布于 2020-08-11 11:40:25

如果没有匹配,则使用DataFrame.where设置为None

代码语言:javascript
复制
a = l.where(l.isin(abc), None)
       
print(a)
      0
0     A
1     B
2  None
3  None
4     C
5  None
6  None
7  None
8     A
票数 3
EN

Stack Overflow用户

发布于 2020-08-11 11:42:59

您可以使用这样的pandas.DataFrame.mask方法:

代码语言:javascript
复制
>>> print(l.mask(~l.isin(abc), None))
      0
0     A
1     B
2  None
3  None
4     C
5  None
6  None
7  None
8     A
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63357313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档