Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:如何通过选择列的范围来筛选行?_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫:如何通过选择列的范围来筛选行?

Python 熊猫:如何通过选择列的范围来筛选行?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: name c1 c2 c3 c4 c5 c6 c7 c8 --- -- -- -- -- -- -- -- -- 0 img1 0 1 1 0 0 0 1 0 1 img2 1 0 0 0 0 0 1 1 2 img3 1 0 0 1 0 1 0 0 ... 我想选择列范围c2到c6中至少有一个非零值(即1)的行。结果数据帧应排除第二行(img2…) 我可以通过在条件中分别提及每一列来解决此问

我有以下数据帧:

    name  c1 c2 c3 c4 c5 c6 c7 c8 
    ---   -- -- -- -- -- -- -- --
0   img1  0  1  1  0  0  0  1  0
1   img2  1  0  0  0  0  0  1  1
2   img3  1  0  0  1  0  1  0  0
...
我想选择列范围c2到c6中至少有一个非零值(即1)的行。结果数据帧应排除第二行(img2…)

我可以通过在条件中分别提及每一列来解决此问题:

df = df[((df['c2']==1) | (df['c3']==1) ... | (df['c6']==1))]
有没有其他更简洁的方法来实现同样的目标而不提及每一列(可能基于列的位置范围)

您可以这样做:

df[df.ix[:,2:7].eq(1).any(axis=1)].ix[:,2:7] 
输出(由于全部为零而缺少第1行):

要显示所有列,请执行以下操作:

df[df.ix[:,2:7].eq(1).any(axis=1)] 
输出:

   name  c1  c2  c3  c4  c5  c6  c7  c8
0  img1   0   1   1   0   0   0   1   0
2  img3   1   0   0   1   0   1   0   0
您可以这样做:

df[df.ix[:,2:7].eq(1).any(axis=1)].ix[:,2:7] 
输出(由于全部为零而缺少第1行):

要显示所有列,请执行以下操作:

df[df.ix[:,2:7].eq(1).any(axis=1)] 
输出:

   name  c1  c2  c3  c4  c5  c6  c7  c8
0  img1   0   1   1   0   0   0   1   0
2  img3   1   0   0   1   0   1   0   0

对于列名未采用特定格式的场景,是否有任何基于列位置的方法?您可以使用
df.columns[2:7]
选择基于位置的基准?对于列名未采用特定格式的场景,是否有任何基于列位置的方法?您可以使用
df.columns[2:7]
选择基于位置的基准,我想包括结果数据框中的所有列。@SaadH第一个答案应该与您的尝试相符,对吗?您还想看到其他内容吗?我可以通过列来实现这一点。是的,我想在结果数据框中包含所有列。@SaadH第一个答案应该与您的尝试相符,对吗?您还想看到其他内容吗?我也可以按列来做