すべての列が含まれている場合にのみ行をドロップ0

strawberrylatte:

私は私がこれらのコードを使用してみましたが、それは代わりに3列のいずれかに0を持っているすべての行を落とし、すべての3つの列に0を持つ行をドロップしようとしています。

indexNames = news[ news['contain1']&news['contain2'] &news['contain3']== 0 ].index
news.drop(indexNames , inplace=True)

私のCSVファイル

contain1  contain2  contain3
   1        0         0
   0        0         0
   0        1         1
   1        0         1
   0        0         0
   1        1         1

私が使用したコードを使用して、私のすべての行が削除されます。以下は、私が代わりに望んでいた結果であります

contain1  contain2  contain3
   1        0         0
   0        1         1
   1        0         1
   1        1         1
エズレル:

最初のフィルタDataFrame.ne等しくないための0少なくとも一つの試合で行を取得、その後と-これだけ削除0によって行をDataFrame.any

df = news[news.ne(0).any(axis=1)]
#cols = ['contain1','contain2','contain3']
#if necessary filter only columns by list
#df = news[news[cols].ne(0).any(axis=1)]
print (df)
   contain1  contain2  contain3
0         1         0         0
2         0         1         1
3         1         0         1
5         1         1         1

詳細:

print (news.ne(0))
   contain1  contain2  contain3
0      True     False     False
1     False     False     False
2     False      True      True
3      True     False      True
4     False     False     False
5      True      True      True

print (news.ne(0).any(axis=1))
0     True
1    False
2     True
3     True
4    False
5     True
dtype: bool

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=365441&siteId=1