如何替换pandas Dataframe中的非整数值?

时间:2017-03-21 14:30:19

标签: python pandas dataframe

我有一个由两列组成的数据框:Age和Salary

Age   Salary
21    25000
22    30000
22    Fresher
23    2,50,000
24    25 LPA
35    400000
45    10,00,000

如何处理Salary列中的异常值并用整数替换它们?

3 个答案:

答案 0 :(得分:8)

如果需要替换非数字值,请使用带参数errors='coerce'的{​​{3}}:

df['new'] = pd.to_numeric(df.Salary.astype(str).str.replace(',',''), errors='coerce')
              .fillna(0)
              .astype(int)
print (df)
   Age     Salary      new
0   21      25000    25000
1   22      30000    30000
2   22    Fresher        0
3   23   2,50,000   250000
4   24     25 LPA        0
5   35     400000   400000
6   45  10,00,000  1000000

答案 1 :(得分:1)

使用numpy在哪里找到非数字值,替换为' 0'。

df['New']=df.Salary.apply(lambda x: np.where(x.isdigit(),x,'0'))

答案 2 :(得分:0)

如果您使用Python 3,请使用以下内容。我不确定其他Python版本如何返回type(x)。但是我不会用0替换丢失或不一致的值,最好用None替换它们。但是,假设您要将字符串值(异常值或不一致的值)替换为0:

df['Salary']=df['Salary'].apply(lambda x: 0 if str(type(x))=="<class 'str'>" else x)