python—在Dataframe中应用all()时,尽管有些值为false,但返回true

ukxgm1gy  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(423)

这个问题在这里已经有答案了

什么是真假?它与真与假有何不同(7个答案)
5小时前关门了。
我有以下Dataframe:

import pandas as pd

numbers = {'set_of_numbers': [1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(numbers,columns=['set_of_numbers'])

df['equal_or_lower_than_4?'] = df['set_of_numbers'].apply(lambda x: 'True' if x <= 4 else 'False')

print (df)

  set_of_numbers equal_or_lower_than_4?
0               1                   True
1               2                   True
2               3                   True
3               4                   True
4               5                  False
5               6                  False
6               7                  False
7               8                  False
8               9                  False
9              10                  False

当我尝试对最后一列应用all()函数时,它返回true,尽管有些值是false

all(df['equal_or_lower_than_4?'])

# Out[29]:

# True
ddrv8njm

ddrv8njm1#

您可以使用以下方法简化代码: df['set_of_numbers'] <= 4 .

import pandas as pd

numbers = {'set_of_numbers': [1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(numbers,columns=['set_of_numbers'])

df['equal_or_lower_than_4?'] = df['set_of_numbers'] <= 4

Out[69]: 
0     True
1     True
2     True
3     True
4    False
5    False
6    False
7    False
8    False
9    False
Name: equal_or_lower_than_4?, dtype: bool

为什么会这样 all(df['equal_or_lower_than_4?']) 返回true?原因是 all() 定义为:
如果iterable中的所有项都为true,则all()函数返回true,否则返回false。
如果iterable对象为空,则all()函数也返回true。
如果不是空的,则.series等于true。所以all()只检查:all([true]),因为只有一个非空pd.series作为参数提供。要检查其中的每个元素是否为真,可以使用np.sum()或all(df['equal\u or\u lower\u than\u 4?'].tolist())

import numpy as np
print(np.all(df['equal_or_lower_than_4?']))

# False

相关问题