import pandas as pd
import numpy as np
data = 'filename.csv'
df = pd.DataFrame(data)
df
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
b 0.932424 1.224234 7.823421 bar False
c -1.135632 1.212112 -0.173215 bar False
d 0.232424 2.342112 0.982342 unbar True
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
我想为某个列选择一个范围,比如two
列,我想选择-0.5到+0.5之间的所有值,怎么做呢?
我本想用
-0.5 < df["two"] < 0.5
但这(自然)会产生ValueError:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我试过了
-0.5 (< df["two"] < 0.5)
但这会输出所有True
。
正确的输出应为
0 True
1 False
2 False
3 False
4 False
5 True
在Pandas Dataframe 列中查找一系列值的正确方法是什么?
编辑:问题
将.between()
与配合使用
df['two'].between(-0.5, 0.5, inclusive=False)
就是两者的区别
-0.5 < df['two'] < 0.5
和不平等
-0.5 =< df['two'] < 0.5
?
3条答案
按热度按时间fivyi3re1#
将
between
与inclusive=False
配合使用可获得严格不等式:inclusive
参数确定是否包括端点(True
:<=
、False
:<
)。这适用于两个符号。如果你想要混合不等式,你需要显式地编写它们:qxsslcnc2#
.between
是一个很好的解决方案,但是如果你想要更好的控制,使用这个:运算符
&
与and
不同。其他运算符是or
的|
和not
的~
。有关详细信息,请参见this discussion。你的陈述是这样的:
因此引发错误。
zysjyyx43#
下面是在不使用between()的情况下获取范围内的值的方法。