Удаление строки тире из столбца смешанного типа в пандах Dataframe - PullRequest
0 голосов
/ 21 марта 2019

У меня есть кадр данных с возможными объектами, смешанными с числовыми значениями.

Моя цель - изменить каждое значение на простое целое число, однако некоторые из этих значений имеют - между числами.

Минимальный рабочий пример выглядит так:

import pandas as pd

d = {'API':[float(4433), float(3344), 6666, '6-9-11', '8-0-11', 9990]}
df = pd.DataFrame(d)

Я пытаюсь:

df['API'] = df['API'].str.replace('-','')

Но это оставляет меня с nan для числовых типов, потому что он ищет во всем кадре только строки.

Вывод:

API

nan
nan
nan
6911
8011
nan

Я бы хотел вывод:

API

4433
3344
6666
6911
8011
9990

Где все типы int.

Есть ли простой способ позаботиться только о типах объектов в Серии, но оставить фактические цифры в такте? Я использую эту технику для больших наборов данных (более 300 000 строк), поэтому что-то вроде lambda или series operations будет предпочтительнее, чем цикл поиска.

Ответы [ 2 ]

4 голосов
/ 21 марта 2019

Использование df.replace с regex=True

df = df.replace('-', '', regex=True).astype(int)

    API
0   4433
1   3344
2   6666
3   6911
4   8011
5   9990
1 голос
/ 21 марта 2019

Также

df['API'] = df['API'].astype(str).apply(lambda x: x.replace('-', '')).astype(int)
...