gpt4 book ai didi

python - 删除特定列号后所有包含全零的行

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

在 pandas dataframe 中,我如何删除在特定列之后有零的所有行。例如

from pandas import DataFrame
df = DataFrame({'a' : [0,1,1,0,0,0,0], 'b' : [0,1,-1, 1,0,0,0], 'c': [1,4,5,6,7,0,0]}).T

df:

    0   1   2   3   4   5   6
a 0 1 1 0 0 0 0
b 0 1 -1 1 0 0 0
c 1 4 5 6 7 0 0

如何在第 3 列之后将包含所有值的行删除为零?此示例中的第一行和第二行(索引 ab)将被删除。

最佳答案

您可以为列添加下标,将 0 替换为 NaN,删除任何没有至少 1 个非 NaN 值的行,然后在索引上使用 loc:

In [63]:
df.loc[df[df.columns[4:]].replace(0, NaN).dropna(thresh=1).index]
Out[63]:
0 1 2 3 4 5 6
c 1 4 5 6 7 0 0

所以分解一下:

In [64]:
df[df.columns[4:]]

Out[64]:
4 5 6
a 0 0 0
b 0 0 0
c 7 0 0

In [66]:
df[df.columns[4:]].replace(0, NaN)

Out[66]:
4 5 6
a NaN NaN NaN
b NaN NaN NaN
c 7 NaN NaN

In [67]:
df[df.columns[4:]].replace(0, NaN).dropna(thresh=1)

Out[67]:
4 5 6
c 7 NaN NaN

In [68]:
df[df.columns[4:]].replace(0, NaN).dropna(thresh=1).index

Out[68]:
Index(['c'], dtype='object')

更新其实更简洁的方式:

In [77]:

df[any(df[df.columns[4:]] != 0, axis=1)]
Out[77]:
0 1 2 3 4 5 6
c 1 4 5 6 7 0 0

关于python - 删除特定列号后所有包含全零的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28202036/

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