我有一个ID列表和一个数据框,其中一列是ID。我想删除数据框中ID不是ID列表中ID之一的所有行。这是我使用的代码:
df = df.drop(df[df.ID not in list_IDs].index)
但是我得到这个错误消息:
值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我做错了什么?
试试这个:
df.ix[~df.ID.isin(list_IDs)]
解释
像df这样的结构。ID不在列表中\u ID
即使在普通Python中也不起作用:
In [12]: [1,2,3] in [1,2,3]
Out[12]: False
In [13]: [1,2] in [1,2,3]
Out[13]: False
在熊猫中你要使用. isin()函数
数据:
In [14]: list_IDs
Out[14]: [24, 12, 42, 44]
In [15]: df
Out[15]:
ID A
0 58 69
1 36 63
2 92 43
3 24 37
4 12 54
5 42 0
6 44 57
7 78 59
8 59 85
9 56 84
演示
In [16]: df.ID.isin(list_IDs)
Out[16]:
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 False
8 False
9 False
Name: ID, dtype: bool
In [17]: df[df.ID.isin(list_IDs)]
Out[17]:
ID A
3 24 37
4 12 54
5 42 0
6 44 57
负isin()
In [18]: df[~df.ID.isin(list_IDs)]
Out[18]:
ID A
0 58 69
1 36 63
2 92 43
7 78 59
8 59 85
9 56 84
In [19]: ~df.ID.isin(list_IDs)
Out[19]:
0 True
1 True
2 True
3 False
4 False
5 False
6 False
7 True
8 True
9 True
Name: ID, dtype: bool
import pandas as pd
x = pd.Series([1,2,3])
现在,考虑一下您希望python如何评估这一点
(x in [1,2])
或者更直接地
pd.Series([1,2,3]) in [1,2]
如你所见
"ValueError:序列的真值不明确"
你想做的就是这样
x.isin([1,2])
看看unutbu在用逻辑表达式和if语句评估熊猫系列值中的答案。基本上,如果您试图通过将数组与列表进行比较来计算TRUE/FALSE,熊猫总是会引发错误,因为不清楚用户是否期望在串联匹配中的所有值返回TRUE,或者在串联匹配中的多个值返回TRUE火柴。因此,必须使用特定的函数,例如. any
和. all
。
加法:为什么数组
我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:
问题内容: 我在尝试将其读入pandas数据框的文本文件中具有以下格式的文件。 如您所见,输入文件中的浮点后面有 10个 整数。 当我尝试将其读入数据帧时,我没有得到最后的4个整数 如何获得输入文件中显示的完整精度?我有一些矩阵操作需要执行,所以我不能将其转换为字符串。 我发现我必须做一些事情,但是我不确定应该在哪里使用它。 问题答案: 这只是显示问题,请参阅docs: Pandas使用专用的十进
问题内容: 我正在尝试使用Pandas在几个条件下进行布尔索引。我原来的DataFrame称为。如果执行以下操作,将得到预期的结果: 但是,如果我这样做(我认为应该是等效的),则不会返回任何行: 知道导致差异的原因是什么? 问题答案: 使用是因为运算符优先级: 或者,在单独的行上创建条件: 样品 :
问题内容: 如何将条件逻辑应用于Pandas DataFrame。 请参见下面显示的DataFrame, 我的原始数据显示在“数据”列中,并且期望的输出显示在其旁边。如果“数据”中的数字小于2.5,则所需的输出为False。 我可以应用循环并重新构建DataFrame …但是那是“非Python的” 问题答案: 只需将列与该值进行比较:
考虑到以下情况,我很难理解这里的机制。 我有一个从: 我想删除列a1中包含“aa”的所有行 我相信我已经尝试了这里的一切,但仍然得到了: ValueError:标签[False False False...False False]轴中不包含 是的,我也试过 任何帮助都将不胜感激,谢谢。
问题内容: 我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地在每列中绘制一行。我要做的是根据我进行的分类为每行手动分配颜色。 以下作品: 但是,当我的索引是整数时,它将不再起作用并抛出为KeyError: 我的理解是,当使用整数索引时,它必须以某种方式从0开始。这是我的猜测,因为以下内容同样适用: 我的问题是: 这是怎么回事 假设我有一个不是从0开始或不是由连续数字组成的整数索引,那么我如