gpt4 book ai didi

Python Pandas 过滤器零单元格

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:53 25 4
gpt4 key购买 nike

我正在尝试按所有非零值过滤数据框。我的 df 是:

    Name    Fruit   Total
0 Steve Orange 0
1 Bob Apple 15
2 Cindy Grapes 27
3 Grant Orange 37

我想从数据 DF 中删除 Steve。这里是 Pandas 的新手,但我已经尝试过了,但它似乎不起作用。我已经尝试查看 loc 的文档,但我认为我在这里缺少有关如何使用 loc 的内容。

df.loc[(df!=0).any(axis=1)]

这只是一个示例。我想删除所有为零的总计。

最佳答案

使用boolean indexing :

print (df[~(df==0).any(axis=1)])
Name Fruit Total
1 Bob Apple 15
2 Cindy Grapes 27
3 Grant Orange 37

但是如果只有数字是 Total 列,则使用:

df[df.Total != 0]

解释:

如果 DataFrame 中有更多数字列 - 这样您不仅可以在最后一列中获得 0,而且可以在其他列中获得,请使用:

首先将所有值与 0 进行比较 - 获取 boolean DataFrame:

print (df==0)
Name Fruit Total
0 False False True
1 False False False
2 False False False
3 False False False

如果需要每列至少找到一个True (0) 需要any axis=0:

print ((df==0).any(axis=0))
Name False
Fruit False
Total True
dtype: bool

但是如果每行需要至少一个 True (0) 添加 axis=1:

print ((df==0).any(axis=1))
0 True
1 False
2 False
3 False
dtype: bool

通过~反转boolean Series:

print (~(df==0).any(axis=1))
0 False
1 True
2 True
3 True
dtype: bool

并使用 bool 索引:

print (df[~(df==0).any(axis=1)])
Name Fruit Total
1 Bob Apple 15
2 Cindy Grapes 27
3 Grant Orange 37

关于Python Pandas 过滤器零单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658291/

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