如何在熊猫中将与字符混合的数字转换为整数

时间:2018-12-14 07:42:59

标签: python pandas

我想转换一个元素类型为喜欢的数字和字符混合的列,并且想将该列转换为Integer类型。

Input:

df = pd.DataFrame({'id':['Q001','Q021']})

Output:

    id
0   Q001
1   Q021

Expected

    id  idInt
0   Q001    1
1   Q021    21

3 个答案:

答案 0 :(得分:9)

或在每个字符串中将pd.Series.str.replace的正则表达式'\D+'替换为''

df['idInt']=df['id'].str.replace('\D+','').astype(int)

现在:

print(df)

是:

     id  idInt
0  Q001      1
1  Q021     21    

答案 1 :(得分:4)

使用正则表达式\d+的{​​{3}}强制转换为整数:

df['idInt'] = df['id'].str.extract('(\d+)').astype(int)
print (df)
     id  idInt
0  Q001      1
1  Q021     21

答案的不同:

df = pd.DataFrame({'id':['12Q001','Q021']})

#remove non numeric
df['idInt1']=df['id'].str.replace('\D+','').astype(int)
#extract first numeric 
df['idInt2'] = df['id'].str.extract('(\d+)').astype(int)
print (df)
       id  idInt1  idInt2
0  12Q001   12001      12
1    Q021      21      21

答案 2 :(得分:0)

与上述基于正则表达式的方法相比,另一种方法(较模糊)和通用性较低:

df["idIint"] = df["id"].str.rpartition("Q",expand=False).str[-1].astype(int)

哪种做法:

     id  idIint
0  Q001       1
1  Q021      21