这个问题在其他多个帖子中被提出但我无法使用任何方法。这是我的数据框:
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.
有什么建议吗?
答案 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
会向您发出警告。