从pandas数据帧中删除零

时间:2017-10-02 19:01:20

标签: python pandas dataframe indexing

这个问题在其他多个帖子中被提出但我无法使用任何方法。这是我的数据框:

df = pd.DataFrame([[1,2,3,4.5],[1,2,0,4,5]])

我想知道我怎么做:

1)删除包含任何/全部零的行 2)删除包含任何/全部零的列

为了删除包含任何零的行,这有效:

df2 = df[~(df == 0).any(axis=1)]
df2 = df[~(df == 0).all(axis=1)]

但是我不能让这个列明智地工作。我试图设置axis = 0,但这给了我这个错误:

__main__:1: UserWarning: Boolean Series key will be reindexed to match DataFrame index.

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

你需要loc

df
   0  1  2  3  4
0  1  2  3  4  5
1  1  2  0  4  5

df.loc[:, ~(df == 0).any(0)]  # notice the :, this means we are indexing on the columns now, not the rows
   0  1  3  4
0  1  2  4  5
1  1  2  4  5

直接索引默认为对行进行索引。您正尝试使用[0, 1, 3, 4]仅为两行索引数据框,因此pandas会向您发出警告。