gpt4 book ai didi

python - 任何(df == value)在 Pandas 数据帧上的不一致行为

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:58 26 4
gpt4 key购买 nike

我有两个数据帧df1, df2如下

>>> df1 = pd.DataFrame([[1,2],[3,4],[5,6],[7,8]]) 
>>> df2 = pd.DataFrame([1,2,3,4,5,6,7,8])
>>> df1
0 1
0 1 2
1 3 4
2 5 6
3 7 8
>>> df2
0
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8

当尝试检查 1 是否在 df1 中时,它会按预期产生 True。

>>> any(df1 == 1) 
True

但是,当在 df2 上尝试相同的操作时,我出乎意料地得到了 False

>>> any(df2 == 1)
False

尽管从 bool 值的角度来看一切似乎都是正确的。

>>> df1 == 1
0 1
0 True False
1 False False
2 False False
3 False False
>>> df2 == 1
0
0 True
1 False
2 False
3 False
4 False
5 False
6 False
7 False
>>>

关于这是为什么的任何想法?

PS:我不是在询问 pandas 中的任何内置函数。我只是对任何人的行为感到困惑。

最佳答案

您需要使用 any 内置的 pandas 而不是来自基本 Python 的 any:

df1.eq(1).any().any()
# True

df2.eq(1).any().any()
# True

当使用 python 中的 any 时,它将数据框视为可迭代/字典,因此只检查列名,而不查看数据框的值;如果你简单地遍历 df1df2,你会看到它只返回列名,这就是字典的行为方式;由于 df1 包含 01 的列名,any([0,1]) 将返回 ;另一方面,df2 只包含一列 [0]any([0]) 返回 False。所以 any(df == 1) 在某种程度上等同于 any(df)any(df.columns):

[x for x in df1]
# [0, 1]

[x for x in df2]
# [0]

关于python - 任何(df == value)在 Pandas 数据帧上的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com