简体   繁体   English

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

[英]How to replace non integer values in a pandas Dataframe?

I have a dataframe consisting of two columns, Age and Salary 我有一个由两列组成的数据框,Age和Salary

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

How to handle outliers in Salary column and replace them with an integer? 如何处理Salary列中的异常值并用整数替换它们?

If need replace non numeric values use to_numeric with parameter errors='coerce' : 如果需要替换非数字值,请使用带参数errors='coerce' to_numeric

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

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

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

If you use Python 3 use the following. 如果您使用Python 3,请使用以下内容。 I am not sure how other Python versions return type(x). 我不确定其他Python版本如何返回类型(x)。 However I would not replace missing or inconsistent values with 0, it is better to replace them with None. 但是我不会用0替换缺失或不一致的值,最好用None替换它们。 But let's say you want to replace string values (outliers or inconsistent values) with 0 : 但是,假设您要将字符串值(异常值或不一致的值)替换为0:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM