2022@lif 发表于 2022-3-30 09:11:01

python数据清洗

怎么用pandas将csv表格中多列同时为0的行删除?
        一        二        三        四        五
0        1        1        1        1        1
1        2        2        2        2        2
2        7        6        5        8        0
3        6        54        6        0        0
4        8        65        3        0        9
5        7        6        4        3        8
6        8        8        5        0        8
7        8        5        7        0        0

就比如这个表,需要将第四,五列中的值同时为0时,将其所在行删除。本表中就删除第4,8行。

小鬼 发表于 2022-3-30 11:14:49

提供个思路,对于4、5列中,对应行值进行相加,=0删就行了
具体代码还得写一下,这个在excel中就经常这么干

阿奇_o 发表于 2022-3-30 15:33:55

最简单的方法,我想应该是:
1. 把0看做(替换为)NaN缺失值,如 df_n = df.replace(0, pd.NA),
2. 然后,用 df_n.dropna(thresh=4).fillna(0)   —— 搞定了!

2022@lif 发表于 2022-3-30 16:02:52

阿奇_o 发表于 2022-3-30 15:33
最简单的方法,我想应该是:
1. 把0看做(替换为)NaN缺失值,如 df_n = df.replace(0, pd.NA),
2. 然后 ...

这样的话,如果某一行原本别的列就有空值的话就会误删了

阿奇_o 发表于 2022-3-30 20:29:49

2022@lif 发表于 2022-3-30 16:02
这样的话,如果某一行原本别的列就有空值的话就会误删了

哦,别的列还可能有空值呀,这个倒是没考虑到。。惭愧~

那就这样吧,只根据四五列进行 多条件的过滤: df[~ ((df.d == 0) & (df.e == 0))]

2022@lif 发表于 2022-3-31 08:47:16

阿奇_o 发表于 2022-3-30 20:29
哦,别的列还可能有空值呀,这个倒是没考虑到。。惭愧~

那就这样吧,只根据四五列进行 多条件的过滤: ...

~的作用是什么?删除匹配的行?
页: [1]
查看完整版本: python数据清洗