gpt4 book ai didi

python - 如果任何值不等于数字,如何从 Pandas 数据框中选择行?

转载 作者:行者123 更新时间:2023-12-04 22:17:57 26 4
gpt4 key购买 nike

我已经能够过滤包含数字的 Pandas 数据框行:

import pandas as pd    

df = pd.DataFrame({'c1': [3, 1, 2], 'c2': [3, 3, 3], 'c3': [2, 5, None], 'c4': [1, 2, 3]})

c1 c2 c3 c4
0 3 3 2.0 1
1 1 3 5.0 2
2 2 3 NaN 3

df1 = df[(df.values == 1)]

c1 c2 c3 c4
0 3 3 2.0 1
1 1 3 5.0 2

但是,如果我尝试基于排除数字进行过滤,则会得到一个非常奇怪的结果,其中包含重复的行:
df1 = df[(df.values != 1)]

c1 c2 c3 c4
0 3 3 2.0 1
0 3 3 2.0 1
0 3 3 2.0 1
1 1 3 5.0 2
1 1 3 5.0 2
1 1 3 5.0 2
2 2 3 NaN 3
2 2 3 NaN 3
2 2 3 NaN 3
2 2 3 NaN 3

这是为什么?以及如何仅过滤不包含指定数字的行?

提前致谢!

最佳答案

看看这个面具

In [88]: df.values != 1
Out[88]:
array([[ True, True, True, False],
[False, True, True, True],
[ True, True, True, True]])

基于 numpy 约定的切片。每 True将重复,因此您在输出中有重复的行。您需要额外的 all检查所有 True 的每一行并为每一行返回一个 True/False。
df[(df.values != 1).all(1)]

Out[87]:
c1 c2 c3 c4
2 2 3 NaN 3

注意:我的意图是重用你的代码,所以我没有改变它。而简洁的代码应该是。
df[(df != 1).all(1)]

或者
df[df.ne(1).all(1)]

关于python - 如果任何值不等于数字,如何从 Pandas 数据框中选择行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357285/

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