为什么 any() 和 pd.any() return 有不同的值?
Why do any() and pd.any() return different values?
我最近发现内置函数 any()
不适用于 pandas 数据帧。
import pandas as pd
data = pd.DataFrame([True, False])
print("base: " + str(any(data)))
print("pandas: " + str(data.any()))
结果:
base: False
pandas: 0 True
dtype: bool
有人可以解释这种行为背后的逻辑吗?
查看 any() 的文档,它说:
any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to:
def any(iterable):
for element in iterable:
if element:
return True
return False
如果你这样做:
for element in data:
print(element)
它将打印 0。
此外,如果您这样做 print(list(data))
,您将得到 [0]
- 即包含一个元素的列表 - 0.
因此,当您遍历数据框本身(而不是行)时,您将遍历列标签,在这种情况下,您只会得到一个 0,当您执行 [=15= 时,它会被解释为 False
].
遍历数据框就是遍历它的列标签,例如。 g.
In[3]: df = pd.DataFrame({"col_1": [1, 2], "col_2": [3, 4]})
In[4]: df
col_1 col_2
0 1 3
1 2 4
In[5]: for i in df:
...: print(i)
col_1
col_2
在您的情况下,只有 1 列带有默认标签 0
(它是 数字 0
,而不是字符串 '0'
), 你获得了
any(data)
,
相当于
any([0])
,
这又是
any([False])
价值False
.
我最近发现内置函数 any()
不适用于 pandas 数据帧。
import pandas as pd
data = pd.DataFrame([True, False])
print("base: " + str(any(data)))
print("pandas: " + str(data.any()))
结果:
base: False
pandas: 0 True
dtype: bool
有人可以解释这种行为背后的逻辑吗?
查看 any() 的文档,它说:
any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to:
def any(iterable): for element in iterable: if element: return True return False
如果你这样做:
for element in data:
print(element)
它将打印 0。
此外,如果您这样做 print(list(data))
,您将得到 [0]
- 即包含一个元素的列表 - 0.
因此,当您遍历数据框本身(而不是行)时,您将遍历列标签,在这种情况下,您只会得到一个 0,当您执行 [=15= 时,它会被解释为 False
].
遍历数据框就是遍历它的列标签,例如。 g.
In[3]: df = pd.DataFrame({"col_1": [1, 2], "col_2": [3, 4]})
In[4]: df
col_1 col_2 0 1 3 1 2 4
In[5]: for i in df:
...: print(i)
col_1 col_2
在您的情况下,只有 1 列带有默认标签 0
(它是 数字 0
,而不是字符串 '0'
), 你获得了
any(data)
,
相当于
any([0])
,
这又是
any([False])
价值False
.