python - 如何在 Pandas 数据框列中选择一系列值?

标签 python python-3.x pandas dataframe range

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/

相关文章:

python-3.x - 如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?

python - 如何将现有数据格式化为 python 3.5 中 csv 文件的列

python - Pandas - A 列的总和,其中 B 列在 C 列中

python - 我应该使用 `==` 与 `(None, None)` 元组进行比较吗?

python - 如何在不保留原始程序的情况下运行另一个 Python 程序

python - 有时需要 "from ... import ..."而普通的 "import ..."并不总是有效吗?为什么?

python - 每隔一行用特殊条件用 0 替换空值

python - 如何从数据集中提取n个 block ?

python - 如何获取div类中的内容

python - 将嵌套字典转换为多级列数据框