熊猫:删除符合条件的值

克里斯蒂安·约翰

假设我有这样的数据:

df = pd.DataFrame({'category': ["blue","red","blue", "blue","green"], 'val1': [5, 3, 2, 2, 5], 'val2':[1, 3, 2, 2, 5], 'val3': [2, 1, 1, 4, 3]})
print(df)

  category  val1  val2  val3
0     blue     5     1     2
1      red     3     3     1
2     blue     2     2     1
3     blue     2     2     4
4    green     5     5     3

如何删除(或用例如NaN代替)满足特定条件的值,而不删除整个行或移动列?

假设我的条件是我想从上述数据中删除所有低于3的值,结果将看起来像这样:

  category  val1  val2  val3
0     blue     5     
1      red     3     3     
2     blue     
3     blue                 4
4    green     5     5     3
丹妮·梅塞乔

使用口罩

df.iloc[:, 1:] = df.iloc[:, 1:].mask(df.iloc[:, 1:] < 3)
print(df)

输出量

  category  val1  val2  val3
0     blue   5.0   NaN   NaN
1      red   3.0   3.0   NaN
2     blue   NaN   NaN   NaN
3     blue   NaN   NaN   4.0
4    green   5.0   5.0   3.0

如果要设置特定值,例如0,请执行以下操作:

df.iloc[:, 1:] = df.iloc[:, 1:].mask(df.iloc[:, 1:] < 3, 0)
print(df)

输出量

  category  val1  val2  val3
0     blue     5     0     0
1      red     3     3     0
2     blue     0     0     0
3     blue     0     0     4
4    green     5     5     3

如果只需要几列,则可以执行以下操作:

df[['val1', 'val2', 'val3']] = df[['val1', 'val2', 'val3']].mask(df[['val1', 'val2', 'val3']] < 3)
print(df)

输出量

  category  val1  val2  val3
0     blue   5.0   NaN   NaN
1      red   3.0   3.0   NaN
2     blue   NaN   NaN   NaN
3     blue   NaN   NaN   4.0
4    green   5.0   5.0   3.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章