DataFrame.where

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors=’raise’, try_cast=False)
替换条件为False的值。

Parameters

cond 当cond为True时,保持原始值;当cond为False时,则替换为对应的值
other 要替换的对应的值
inplace False:返回一个副本;True:就地执行操作并返回None
axis 0:作用于行;1:作用于列
level 索引级别
errors raise:允许引发异常;ignore:抑制异常
try_cast 尝试将结果转换回输入类型(如果可能)

举例:将年龄小于等于18的值替换为18

  1. import pandas as pd
  2. df = pd.DataFrame({'site':['google', 'baidu', 'wiki', 'google'],
  3. 'age':[18, 39, 22, 18],
  4. 'price': [1.0, 2.0, 3.0, 1.0],
  5. 'color': ['red', 'black', None, 'red']})
  6. df.where(df['age']>18, 18)
  7. -------------------------------------------------------------------
  8. site age price color
  9. 0 18 18 18.0 18
  10. 1 baidu 39 2.0 black
  11. 2 wiki 22 3.0 None
  12. 3 18 18 18.0 18

举例:将NAN值替换为None

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame({'site':['google', np.nan, 'wiki', 'google'],
  4. 'age':[np.nan, 39, 22, 18],
  5. 'price': [1.0, 2.0, 3.0, 1.0],
  6. 'color': ['red', 'black', np.nan, 'red']})
  7. df.where(df.notnull(), None)
  8. -------------------------------------------------------------------
  9. site age price color
  10. 0 google None 1 red
  11. 1 None 39 2 black
  12. 2 wiki 22 3 None
  13. 3 google 18 1 red