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 数据框列中查找值范围的正确方法是什么?
编辑:问题
使用 .between()
和
df['two'].between(-0.5, 0.5, inclusive=False)
将是
之间的区别 -0.5 < df['two'] < 0.5
和像
这样的不等式 -0.5 =< df['two'] < 0.5
?
最佳答案
使用 between
与 inclusive=False
对于严格的不等式:
df['two'].between(-0.5, 0.5, inclusive=False)
inclusive
参数确定是否包含端点(True
:<=
,False
:<
)。这适用于两个标志。如果你想要混合不等式,你需要明确地编码它们:
(df['two'] >= -0.5) & (df['two'] < 0.5)
关于python - 如何在 Pandas 数据框列中选择一系列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884466/