我有一个熊猫Df,具有200万行* 10列。 我想删除除非零元素的单列以外的所有列的所有零元素。
例如我的Df喜欢:
exec {'test':
command => '/usr/bin/hammer proxy refresh-features --name $(hostname)',
environment => ["HOME=/root"],
refreshonly => true,
}
我需要什么:
DO $$
DECLARE
l_lob_id OID;
r record; BEGIN
for r in
select data, filename from bytea_table
LOOP
l_lob_id:=lo_from_bytea(0,r.data);
PERFORM lo_export(l_lob_id,'/home/...'||r.filename);
PERFORM lo_unlink(l_lob_id);
END LOOP;
END; $$
我的要求:
要求1:
离开第一列(时间)时,应检查每行中是否有零个元素。如果所有列值均为零,则删除该特定行。
要求2:
最后,我希望索引能够正确更新
我尝试过的事情:
我一直在看this link。
我了解所使用的逻辑,但无法根据需要重现结果。
我希望会有一个简单的方法来进行操作...
答案 0 :(得分:2)
使用iloc
来选择所有没有第一列的列,以comapre表示不等于ne
,并通过any
测试每行至少一个True
来过滤{{3 }},最后boolean indexing
:
df = df[df.iloc[:, 1:].ne(0).any(axis=1)].reset_index(drop=True)
替代列Time
:
df = df[df.drop('Time', axis=1).ne(0).any(axis=1)].reset_index(drop=True)
print (df)
Time a b c d e
0 2 1 2 0 0 0
1 4 5 0 0 0 0
2 6 7 0 0 0 0