Python:特定列

时间:2018-04-15 12:37:51

标签: python python-3.x pandas

我想删除特定列中值为零的行

>>> 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

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]

<强>解释

  • 在所有3种情况下,都会生成布尔数组,用于索引数据帧。
  • 所有这些方法都可以使用df.loc[(df[['a', 'b']] != 0).all(axis=1)] 表示进一步优化,例如numpy