我想删除特定列中值为零的行
>>> 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
工资和年龄列中的一些数据缺失 和第三列,性别是二元变量,1表示男性0表示女性。 0这里不是缺失数据, 我想丢掉工资或年龄的行 所以我可以得到
>>> df
salary age gender
0 10000 23 1
1 15000 34 0
2 23000 21 1
3 35000 37 1
答案 0 :(得分:-1)
选项1
您可以使用library(purrr)
map2(df[c('col1', 'col2')], df[c('scalar1', 'scalar2')], ~ fromJSON(.x)/.y) %>%
reduce(`/`)
pd.DataFrame.loc
选项2
或者更智能的方式来实现您的逻辑:
df = df.loc[~((df['salary'] == 0) | (df['age'] == 0))]
这是有效的,因为如果薪水或年龄为0,他们的产品也将为0。
选项3
以下方法可以轻松扩展到多个列:
df = df.loc[df['salary'] * df['age'] != 0]
<强>解释强>
df.loc[(df[['a', 'b']] != 0).all(axis=1)]
表示进一步优化,例如numpy
。