根据前N列删除行

时间:2018-02-10 14:30:32

标签: python-3.x pandas

我有一个数据名称:

import pandas as pd
df= pd.DataFrame({'date':['2017-12-31','2018-02-01','2018-03-01'],'type':['Asset','Asset','Asset'],'Amount':[1,0,0],'Amount1':[1,0,0],'Ted':[1,0,0]})
df

我想删除前三列为0的行。我不想在更改时使用列的名称。在这种情况下,我想删除第2行和第3行。

1 个答案:

答案 0 :(得分:3)

使用boolean indexing

df = df[df.iloc[:, :3].ne(0).any(axis=1)]
#alternative solution with inverting mask by ~
#df = df[~df.iloc[:, :3].eq(0).all(axis=1)]
print (df)
   Amount  Amount1  Ted        date   type
0       1        1    1  2017-12-31  Asset

<强>详细

首先按iloc选择N列:

print (df.iloc[:, :3])
   Amount  Amount1  Ted
0       1        1    1
1       0        0    0
2       0        0    0

ne!=)比较:

print (df.iloc[:, :3].ne(0))

   Amount  Amount1    Ted
0    True     True   True
1   False    False  False
2   False    False  False

any每行至少获得一行True

print (df.iloc[:, :3].ne(0).any(axis=1))
0     True
1    False
2    False
dtype: bool