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第一个答案应该与您的尝试相符,对吗?您还想看到其他内容吗?我也可以按列来做