看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
需求为删除最后一行上的值为 0 的列。一般情况下,在 Excel 中最后一行为汇总行,如果汇总值为 0 的话,数据清洗时就可以删除。
在 Pandas 中,对于有逻辑的删除一般推荐使用反选法进行删除,即将删除的内容排除在选择之外,返回删除后最终的数据,再将数据赋值覆盖。
针对此需求,我们有两个方案,一是选择最后一列不为 0 的列,另外一个方案是转置后按行删除,再转置回来。
数据:
import pandas as pd
import numpy as np
np.random.seed(6)
data = np.random.randint(0, 5, size=(3,3))
df = pd.DataFrame(data, columns=['a', 'b', 'c'])
df
'''
a b c
0 2 1 3
1 4 2 2
2 0 1 1
'''
方案一:
df.loc[:, ~(df.iloc[-1, :] == 0)]
'''
b c
0 1 3
1 2 2
2 1 1
'''
上述代码的重点是在 loc[x, y] 方法中 y 位置也可以用表达式产出布尔序列,True 值为要保留的列。
更新时间:2024-08-18 15:40:10 标签:pandas python 删除