如何解决为什么any和pd.any返回不同的值?
我最近发现内置函数any()
对熊猫数据框不起作用。
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
有人可以解释这种行为背后的逻辑吗?
解决方法
遍历数据框就是遍历其列标签,例如e。 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
对于只有一列带有默认标签0
(它是 number 0
,而不是字符串'0'
)的情况,您获得了
any(data)
,
为
any([0])
,
依次为
any([False])
值False
。
在文档中查找any(),它说:
any(iterable)如果iterable的任何元素为true,则返回True。如果iterable为空,则返回False。等效于:
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,当您执行False
时,该引线将被解释为any(data)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。