Python 3.x 使用dataframe timedelta列格式化人类可读的
返回:Python 3.x 使用dataframe timedelta列格式化人类可读的,python-3.x,pandas,Python 3.x,Pandas,返回: data = df.groupby(['Jahr','Monat', 'Kunde'])['Dauer'].sum().reset_index(name='TD') TD=时间增量 我希望在几小时内收到信息,而不是几天 我试过这样的方法: data['TD']/pd.Timedelta('1小时') 这将返回10天04:05:00244.083333(十进制小时),但我需要244.05(小时和分钟) 我找到了一些关于如何转换它的技巧,但是有没有好的方法可以在data=df.groupb
data = df.groupby(['Jahr','Monat', 'Kunde'])['Dauer'].sum().reset_index(name='TD')
TD=时间增量
我希望在几小时内收到信息,而不是几天
我试过这样的方法:
data['TD']/pd.Timedelta('1小时')
这将返回10天04:05:00
244.083333
(十进制小时),但我需要244.05
(小时和分钟)
我找到了一些关于如何转换它的技巧,但是有没有好的方法可以在data=df.groupby(['Jahr','Monat','Kunde'])['Dauer'].sum().reset_index(name='TD')
编辑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 | 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
首先按删除分和秒,转换为字符串并按添加零,然后使用转换为字符串的slicinf TimeDelta添加分钟:
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
将返回10天04:05:00 244.083333,但我需要244.05
-为什么05
?这是一份我没有影响的客户协议。嗯,有点奇怪,你能从所有数据中添加导出的输出吗?
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