Python Pandas Convert String в int / float - PullRequest
       0

Python Pandas Convert String в int / float

0 голосов
/ 10 сентября 2018

У меня есть фрейм данных pandas, которым я пытаюсь манипулировать, чтобы столбец «сумма» конвертировался из строки («чч.чч« часы »») в int или float.

Мне интересно, какова лучшая практика в этой ситуации. Я попытался pd.to_numeric (), но безуспешно. Я думаю, что моя проблема с «часами», прикрепленными к концу каждой строки.

Есть ли другая функция, которая идентифицирует числовые символы и просто игнорирует часть строки в «часах», или мне сначала нужно обрезать последние 5 символов перед работой со встроенной функцией преобразования dtype (pd.to_numeric)? Спасибо!

           day  amount
2018-08-23  3   24.00 hours
2018-08-24  4   8.00 hours
2018-08-25  5   32.00 hours
2018-08-26  6   24.00 hours
2018-08-27  0   24.00 hours

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

В зависимости от целостности ваших данных, вы можете использовать pd.to_timedelta для преобразования их в длительность (timeDelta):

>>>df.amount=pd.to_timedelta(df.amount)
>>>df

    date      day   amount
0   2018-08-23  3   1 days 00:00:00
1   2018-08-24  4   0 days 08:00:00
2   2018-08-25  5   1 days 08:00:00
3   2018-08-26  6   1 days 00:00:00
4   2018-08-27  0   1 days 00:00:00
0 голосов
/ 10 сентября 2018

Просто используйте строковые методы, чтобы получить только те числа, которые имеют значение. В зависимости от того, насколько грязен или отформатирован ваш столбец, доступно много вариантов:

import pandas as pd

df['amount'] = pd.to_numeric(df.amount.str.replace('hours', ''), downcast='integer')
# or 
df['amount'] = pd.to_numeric(df.amount.str[:-5], downcast='integer')
# or
df['amount'] = pd.to_numeric(df.amount.str.extract('(\d+\.?\d*)')[0], downcast='integer')

Вся продукция:

            day  amount
2018-08-23    3      24
2018-08-24    4       8
2018-08-25    5      32
2018-08-26    6      24
2018-08-27    0      24
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...