Удалите десятичное значение в мин и se c в pandas - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть фрейм данных как

dict1={'time' : ['2 min 19 sec','2 min 43 sec','1 min 33 sec','32 sec','40 sec','22 sec','2.3 
sec','3.2 min 13 sec','4.9 min 7.6 sec']}
df=pd.DataFrame(dict1)
df


    time
0   2 min 19 sec
1   2 min 43 sec
2   1 min 33 sec
3   32 sec
4   40 sec
5   22 sec
6   2.3 sec
7   3.2 min 13 sec
8   4.9 min 7.6 sec

Мне нужно сделать вывод следующим образом, чтобы десятичные значения для min были добавлены к se c, а десятичное значение для se c к быть удаленным

        time
0   2 min 19 sec
1   2 min 43 sec
2   1 min 33 sec
3   0 min 32 sec
4   0 min 40 sec
5   0 min 22 sec
6   0 min 2 sec
7   3 min 15 sec
8   4 min 16 sec

1 Ответ

1 голос
/ 27 февраля 2020

Попробуйте использовать Series.str.extract с шаблоном регулярных выражений для извлечения числовых значений.

Добавьте десятичную часть минут к секундам, а затем используйте понимание списка для форматирования желаемого результата:

vals = df['time'].str.extract('^(?:(\S+?) min )?(\S+?) sec').fillna(0).astype(float)
vals[1] += vals[0].mod(1).mul(10)

df['time_corrected'] = [f'{int(m)} min {int(s)} sec' for m, s in vals.apply(tuple, axis=1)]

[out]

              time time_corrected
0     2 min 19 sec   2 min 19 sec
1     2 min 43 sec   2 min 43 sec
2     1 min 33 sec   1 min 33 sec
3           32 sec   0 min 32 sec
4           40 sec   0 min 40 sec
5           22 sec   0 min 22 sec
6          2.3 sec    0 min 2 sec
7   3.2 min 13 sec   3 min 15 sec
8  4.9 min 7.6 sec   4 min 16 sec
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...