Извлечение количества дней из столбца timedelta в пандах - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть Dataframe, в котором хранится значение старения, как показано ниже:

Aging
-84 days +11:36:15.000000000
-46 days +12:25:48.000000000
-131 days +20:53:45.000000000
-131 days +22:22:50.000000000
-130 days +01:02:03.000000000
-80 days +17:02:55.000000000

Я пытаюсь извлечь текст до days в столбце выше.Я попробовал следующее:

df['new'] = df.Aging.split('days')[0]

Вышеуказанное возвращает

AttributeError: 'Series' object has no attribute 'split'

Ожидаемый результат:

-84
-46
-131
-131
-130
-80

1 Ответ

0 голосов
/ 21 декабря 2018

IMO, лучшей идеей будет преобразование в timedelta и извлечение компонента days.

pd.to_timedelta(df.Aging, errors='coerce').dt.days

0    -84
1    -46
2   -131
3   -131
4   -130
5    -80
Name: Aging, dtype: int64

Если вы настаиваете на использовании строковых методов, вы можете использовать str.extract.

pd.to_numeric(
    df.Aging.str.extract('(.*?) days', expand=False),
    errors='coerce')

0    -84
1    -46
2   -131
3   -131
4   -130
5    -80
Name: Aging, dtype: int32

Или, используя str.split

pd.to_numeric(df.Aging.str.split(' days').str[0], errors='coerce')

0    -84
1    -46
2   -131
3   -131
4   -130
5    -80
Name: Aging, dtype: int64
...