Python:在特定列中删除值= 0行[重复]
Posted
技术标签:
【中文标题】Python:在特定列中删除值= 0行[重复]【英文标题】:Python: drop value=0 row in specific columns [duplicate] 【发布时间】:2018-09-25 06:55:52 【问题描述】:我想删除特定列中零值的行
>>> df
salary age gender
0 10000 23 1
1 15000 34 0
2 23000 21 1
3 0 20 0
4 28500 0 1
5 35000 37 1
缺少薪水和年龄列中的一些数据 第三列,gender 是一个二元变量,其中 1 表示男性 0 表示女性。而这里的 0 不是缺失数据, 我想删除薪水或年龄中缺少的行 所以我可以得到
>>> df
salary age gender
0 10000 23 1
1 15000 34 0
2 23000 21 1
3 35000 37 1
【问题讨论】:
df = df[(df['salary'] > 0) & (df['age'] > 0)]
感谢您为我编辑格式
这是我发布这个问题后第一次在这个论坛上提问,我发现格式很糟糕,你在我做之前编辑了它非常感谢
【参考方案1】:
选项 1
您可以使用pd.DataFrame.loc
过滤您的数据框:
df = df.loc[~((df['salary'] == 0) | (df['age'] == 0))]
选项 2
或者更聪明的方式来实现你的逻辑:
df = df.loc[df['salary'] * df['age'] != 0]
这是可行的,因为如果薪水或年龄为 0,他们的乘积也将为 0。
选项 3
下面的方法可以很方便的扩展到多列:
df.loc[(df[['a', 'b']] != 0).all(axis=1)]
说明
在所有 3 种情况下,都会生成布尔数组,用于索引您的数据帧。 所有这些方法都可以通过使用numpy
表示进一步优化,例如df['salary'].values
。
【讨论】:
以上是关于Python:在特定列中删除值= 0行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
python pandas:删除A列的重复项,保留B列中具有最高值的行
如何从mysql列中存在的所有行中删除重复值[duplicate]