Столбец таймделты с данными в панде для форматирования удобочитаемого человеком - PullRequest
1 голос
/ 07 октября 2019
data = df.groupby(['Jahr','Monat', 'Kunde'])['Dauer'].sum().reset_index(name='TD')

возвращает:

Jahr | Monat | Kunde | TD
2019 | 7     | C1    | 0 days 08:35:00
2019 | 8     | C1    | 10 days 04:05:00
2019 | 8     | C2    | 0 days 03:25:00
2019 | 9     | C1    | 10 days 09:15:00
2019 | 9     | C6    | 0 days 01:45:00
2019 | 9     | C3    | 0 days 02:30:00
2019 | 9     | C5    | 0 days 00:15:00

TD = timedelta

Вместо дней я хотел бы получать информацию в часах

Я пытался что-то вроде этого:data['TD'] / pd.Timedelta('1 hours')

Это вернется за 10 days 04:05:00 244.083333 (десятичные часы), но мне нужно 244.05 (часы и минуты)

Я нашел несколько советов о том, как конвертировать его, ноесть ли хороший способ получить все это в data = df.groupby(['Jahr','Monat', 'Kunde'])['Dauer'].sum().reset_index(name='TD')

Edit 2019-10-07, 14: 55:

Jahr | Monat | Kunde | TD
2019 | 7     | C1    | 0 days 08:35:00
2019 | 8     | C1    | 10 days 04:05:00
2019 | 8     | C2    | 0 days 03:25:00
2019 | 9     | C1    | 10 days 09:15:00
2019 | 9     | C6    | 0 days 01:45:00
2019 | 9     | C3    | 0 days 02:30:00
2019 | 9     | C5    | 0 days 00:15:00

должно стать

Jahr | Monat | Kunde | TD
2019 | 7     | C1    | 08:35:00
2019 | 8     | C1    | 244:05:00
2019 | 8     | C2    | 03:25:00
2019 | 9     | C1    | 249:15:00
2019 | 9     | C6    | 01:45:00
2019 | 9     | C3    | 02:30:00
2019 | 9     | C5    | 00:15:00

1 Ответ

2 голосов
/ 07 октября 2019

Сначала удалите минуты и секунды с помощью Series.dt.floor, преобразуйте их в строки и добавьте нули на Series.str.zfill, а затем добавьте минуты с помощью временной шкалы slicinf, преобразованной в строки:

floor_h = (data['TD'].dt.floor('H').div(pd.Timedelta('1 hours'))
                   .astype(int)
                   .astype(str)
                   .str.zfill(2))
data['TD'] = floor_h + ':' + data['TD'].astype(str).str[-15:-10]
print (data)
   Jahr  Monat Kunde         TD
0  2019      7    C1   08:35:00
1  2019      8    C1  244:05:00
2  2019      8    C2   03:25:00
3  2019      9    C1  249:15:00
4  2019      9    C6   01:45:00
5  2019      9    C3   02:30:00
6  2019      9    C5   00:15:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...