Python 熊猫:打印数据框中的所有非空行

Python 熊猫:打印数据框中的所有非空行,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据: time-stamp ccount A B C D E F G H I 2015-03-03T23:43:33+0000 0 0 0 0 0 0 0 0 0 0 2015-03-04T06:33:28+0000 0 0 0 0 0 0 0 0 0 0 2015-03-04T06:18:38+0000 0 0 0 0

我有以下数据:

time-stamp              ccount  A   B   C   D   E   F   G   H   I
2015-03-03T23:43:33+0000    0   0   0   0   0   0   0   0   0   0
2015-03-04T06:33:28+0000    0   0   0   0   0   0   0   0   0   0
2015-03-04T06:18:38+0000    0   0   0   0   0   0   0   0   0   0
2015-03-04T05:36:43+0000    0   0   0   1   0   0   0   0   0   0
2015-03-04T05:29:09+0000    0   0   0   1   0   0   0   0   1   0
2015-03-04T07:01:11+0000    0   0   1   0   1   0   0   0   0   0
2015-03-03T15:27:06+0000    19  0   1   0   1   0   0   0   0   0
2015-03-03T15:43:38+0000    10  0   1   0   1   1   0   0   0   0
2015-03-03T18:16:26+0000    0   0   0   1   0   0   0   0   0   0
2015-03-03T18:19:48+0000    0   0   0   0   0   0   0   0   0   0
2015-03-03T18:20:02+0000    4   0   0   0   0   1   0   0   0   0
2015-03-03T20:21:55+0000    2   0   0   0   0   0   1   0   0   0
2015-03-03T20:37:36+0000    0   0   0   0   0   0   0   0   0   0
2015-03-04T03:03:51+0000    1   0   0   0   0   0   1   0   0   0
2015-03-03T16:33:04+0000    9   0   0   0   0   0   0   0   0   0
2015-03-03T16:18:13+0000    1   0   0   0   0   0   0   0   0   0
2015-03-03T16:34:18+0000    4   0   0   0   0   0   0   0   0   0
2015-03-03T18:11:36+0000    5   0   0   0   0   0   0   0   0   0
2015-03-03T18:24:35+0000    0   0   0   0   0   0   0   0   0   0
我想对a到I列中至少有一行(“1”)的所有行进行切片

对于上述数据,输出将为:

time-stamp              ccount  A   B   C   D   E   F   G   H   I
2015-03-04T05:36:43+0000    0   0   0   1   0   0   0   0   0   0
2015-03-04T05:29:09+0000    0   0   0   1   0   0   0   0   1   0
2015-03-04T07:01:11+0000    0   0   1   0   1   0   0   0   0   0
2015-03-03T15:27:06+0000    19  0   1   0   1   0   0   0   0   0
2015-03-03T15:43:38+0000    10  0   1   0   1   1   0   0   0   0
2015-03-03T18:16:26+0000    0   0   0   1   0   0   0   0   0   0
2015-03-03T18:20:02+0000    4   0   0   0   0   1   0   0   0   0
2015-03-03T20:21:55+0000    2   0   0   0   0   0   1   0   0   0
2015-03-04T03:03:51+0000    1   0   0   0   0   0   1   0   0   0

我们忽略了从a到I的任何列中没有“1”的所有行。

您可以使用
any
和布尔索引仅选择至少有一个条目等于
1
的行:

df[(df.loc[:,['A','B','C','D','E','F','G','H','I']] == 1).any(axis=1)]
如果有很多列,则按标签引用列会有点单调乏味,因此可以使用切片使事情更整洁:

df[(df.loc[:, 'A':'I'] == 1).any(axis=1)]
输出:

2015-03-04T05:36:43+0000    0   0   0   1   0   0   0   0   0   0

2015-03-04T05:29:09+0000    0   0   0   1   0   0   0   0   1   0

2015-03-04T07:01:11+0000    0   0   1   0   1   0   0   0   0   0

2015-03-03T15:27:06+0000    19  0   1   0   1   0   0   0   0   0

2015-03-03T15:43:38+0000    10  0   1   0   1   1   0   0   0   0

2015-03-03T18:16:26+0000    0   0   0   1   0   0   0   0   0   0

2015-03-03T18:20:02+0000    4   0   0   0   0   1   0   0   0   0

2015-03-03T20:21:55+0000    2   0   0   0   0   0   1   0   0   0

2015-03-04T03:03:51+0000    1   0   0   0   0   0   1   0   0   0

2015-03-03T16:18:13+0000    1   0   0   0   0   0   0   0   0   0

另一个解决方案是假设A到I列中的所有值都是非负的

df[(df.drop(['time-stamp','ccount',],axis=1.sum(axis=1)>0)]


当然,下降部分可以与其他解决方案组合

df.loc[(df.loc[:,'A':'I']==1)。任何(axis=1)]
都是可能的。哦!我忽略了这种可能性。非常感谢。(最新答覆)
2015-03-04T05:36:43+0000    0   0   0   1   0   0   0   0   0   0

2015-03-04T05:29:09+0000    0   0   0   1   0   0   0   0   1   0

2015-03-04T07:01:11+0000    0   0   1   0   1   0   0   0   0   0

2015-03-03T15:27:06+0000    19  0   1   0   1   0   0   0   0   0

2015-03-03T15:43:38+0000    10  0   1   0   1   1   0   0   0   0

2015-03-03T18:16:26+0000    0   0   0   1   0   0   0   0   0   0

2015-03-03T18:20:02+0000    4   0   0   0   0   1   0   0   0   0

2015-03-03T20:21:55+0000    2   0   0   0   0   0   1   0   0   0

2015-03-04T03:03:51+0000    1   0   0   0   0   0   1   0   0   0

2015-03-03T16:18:13+0000    1   0   0   0   0   0   0   0   0   0