使用for循环和嵌套不等式语句评估pandas系列

时间:2016-08-10 17:04:41

标签: python loops pandas

我尝试通过pandas数据帧运行for循环,并将逻辑表达式应用于数据帧的每个元素中的列。我的代码编译没有错误,但没有输出。

示例代码:

for i in df:
    if df['value'].all() >= 0.0 and df['value'].all() < 0.05:
        print df['value']

任何帮助将不胜感激!谢谢

3 个答案:

答案 0 :(得分:1)

如果您想查看列中的所有元素是否满足该逻辑表达式,可以使用此方法:

np.logical_and(df['value'] >= 0.0, df['value'] < 0.05).all()

这将返回单个TrueFalse

顺便说一句,我看不到for循环是如何被使用的。由于在当前格式中,每次迭代都会运行相同的代码。

答案 1 :(得分:0)

.all()将返回TrueFalse,因此根据您的支票顺序,您将过滤掉所有内容。我假设你真正想要的是(df['value'] >= 0.0).all() and (df['value'] < 0.05).all()

编辑:你也没有实际迭代列。将'value'替换为i

In [11]: df = pd.DataFrame([np.arange(0, 0.04, 0.01), np.arange(0, 4, 1)]).T

In [12]: df
Out[12]:
      0    1
0  0.00  0.0
1  0.01  1.0
2  0.02  2.0
3  0.03  3.0

In [13]: for c in df:
    ...:     if (df[c] >= 0.0).all() and (df[c] < 0.05).all():
    ...:         print df[c]
    ...:
0    0.00
1    0.01
2    0.02
3    0.03
Name: 0, dtype: float64

答案 2 :(得分:0)

这是您正在寻找的结果吗?

print(df.loc[(df['value'] >= 0.0) & (df['value'] < 0.05), 'value'])

仅针对值,请将其放入:

print(df.loc[(df['value'] >= 0.0) & (df['value'] < 0.05), 'value'].values)

print(list(df.loc[(df['value'] >= 0.0) & (df['value'] < 0.05), 'value']))

获取值列表