Кастинг Pandas Datatype - как использовать запятую и пробел - PullRequest
0 голосов
/ 28 октября 2018

У меня есть pandas. DataFrame содержит столбец «a», имеющий тип Object. Я хотел бы преобразовать «a» в тип int, но одна из строк содержит данные с запятой, например «23., 5»

* 1002.* Та же проблема с другим столбцом 'b', который содержит 'пробел', и я не могу использовать .astype(float)

Мое решение:

df['a'] = df['a'].replace({',': ''}, regex=True)
df['a'] = df['a'].astype(float)

Для b

df['b'] = df['b'].replace({' ': ''}, regex=True)
df['b'] = df['b'].apply(pd.to_numeric)

Это лучшее решение?

1 Ответ

0 голосов
/ 28 октября 2018

Это зависит от ваших данных.

Если у вас есть ряд типов в вашей серии object dtype, вы можете просто преобразовать в str, применить логику замены, а затем использовать pd.to_numeric.

Обратите внимание, что для замены регулярных выражений и пробелов не обязательно:

s = pd.Series(['23.,5', 35.1, 425, '564', '34.133', '33 ', ' 22'])

s = pd.to_numeric(s.astype(str).str.replace(',', ''), errors='coerce')

print(s)

0     23.500
1     35.100
2    425.000
3    564.000
4     34.133
5     33.000
6     22.000
dtype: float64

Аргумент errors='coerce' обеспечивает замену неконвертируемых значений на NaN.

Конечно, если все ваши значения уже являются строками, преобразование в str не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...