我有一个dataFrame,行和列总和为0.
A B C D
0 1 1 0 1
1 0 0 0 0
2 1 0 0 1
3 0 1 0 0
4 1 1 0 1
Run Code Online (Sandbox Code Playgroud)
最终结果应该是
A B D
0 1 1 1
2 1 0 1
3 0 1 0
4 1 1 1
Run Code Online (Sandbox Code Playgroud)
请注意,已删除仅包含零的行和列.
unu*_*tbu 18
df.loc[row_indexer, column_indexer] 允许您使用布尔掩码选择行和列:
In [88]: df.loc[(df.sum(axis=1) != 0), (df.sum(axis=0) != 0)]
Out[88]:
A B D
0 1 1 1
2 1 0 1
3 0 1 0
4 1 1 1
[4 rows x 3 columns]
Run Code Online (Sandbox Code Playgroud)
df.sum(axis=1) != 0 当且仅当行不总和为0时为真.
df.sum(axis=0) != 0 当且仅当列不总和为0时为真.
在 Pandas 数据框中构建全零的 Drop 行以避免使用 sum()
df = pd.DataFrame({'A': [1,0,1,0,1],
'B': [1,0,0,1,1],
'C': [0,0,0,0,0],
'D': [1,0,1,0,1]})
df.loc[(df!=0).any(1), (df!=0).any(0)]
A B D
0 1 1 1
2 1 0 1
3 0 1 0
4 1 1 1
Run Code Online (Sandbox Code Playgroud)