Как преобразовать число, смешанное с символом, в целое число в пандах - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу преобразовать столбцы, в которых элементы имеют тип понравившегося числа, смешанного с символом, и я хочу преобразовать столбец в тип 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 голосов
/ 14 декабря 2018

Или используйте pd.Series.str.replace с регулярным выражением '\D+', заменяемым '' в каждой строке:

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

А теперь:

print(df)

Is:

     id  idInt
0  Q001      1
1  Q021     21    
0 голосов
/ 07 марта 2019

Еще один (более непонятный) вариант, менее общий по сравнению с вышеупомянутыми подходами на основе регулярных выражений:

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

Какие прокуды:

     id  idIint
0  Q001       1
1  Q021      21
0 голосов
/ 14 декабря 2018

Используйте extract по регулярному выражению \d+ с приведением к целым числам:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...