Python 如何替换数据帧中的非整数值?

Python 如何替换数据帧中的非整数值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个由两列组成的数据框,年龄和薪水 Age Salary 21 25000 22 30000 22 Fresher 23 2,50,000 24 25 LPA 35 400000 45 10,00,000 如何处理薪资列中的异常值并将其替换为整数 如果需要替换非数值,请使用参数errors='concurve': df['new'] = pd.to_numeric(df.Salary.astype(str).str.replace(',',''

我有一个由两列组成的数据框,年龄和薪水

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

如何处理薪资列中的异常值并将其替换为整数

如果需要替换非数值,请使用参数
errors='concurve'

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 where查找非数字值,替换为“0”

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

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

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

它将非数字替换为NaN,然后将
NaN
替换为某些整数,例如
0
错误有三个选项:
raise
是默认值,当遇到非数字字符时抛出错误<代码>强制遇到非数字字符时返回
NaN
ignore
无法转换为数值时返回原始值。@latish-请检查上次编辑,需要将值转换为
str
,因为混合了内容-
int
str
values@jezrael对于多个列,这是什么样子的?
df['col']=df['col'].str.replace(“[^0-9]”,“”)
如果你想用它来替换一个值的一部分,比如说它是25倍,你想它是250倍,那该怎么办?