Python 如何将日期时间格式转换为分钟-熊猫
我有一个数据帧,它有一个列usage_duration(这是datetime格式中另外两列的差异)。如下所示:Python 如何将日期时间格式转换为分钟-熊猫,python,python-3.x,pandas,datetime,series,Python,Python 3.x,Pandas,Datetime,Series,我有一个数据帧,它有一个列usage_duration(这是datetime格式中另外两列的差异)。如下所示: processid, userid, usage_duration 17613,root,0 days 23:41:03.000000000 17641,root,2 days 04:05:26.000000000 13848,acs,0 days 00:00:50.000000000 3912,acs,0 days 06:07:38.000000000 6156,acs,0 day
processid, userid, usage_duration
17613,root,0 days 23:41:03.000000000
17641,root,2 days 04:05:26.000000000
13848,acs,0 days 00:00:50.000000000
3912,acs,0 days 06:07:38.000000000
6156,acs,0 days 17:22:43.000000000
现在我想把它转换成分钟。它应该如下所示:
processid, userid, usage_duration_min
17613,root,1421
17641,root,3125
13848,acs,0
3912,acs,367
6156,acs,1042
有人能告诉我怎么可能吗
非常感谢您的支持使用或除以60
,最后转换为整数
s:
#if necessary converting to timedelta
#df['usage_duration'] = pd.to_timedelta(df['usage_duration'])
df['new'] = df['usage_duration'].dt.total_seconds().div(60).astype(int)
或:
这是一种方式:
s = pd.Series(['0 days 23:41:03.000000000', '2 days 04:05:26.000000000',
'0 days 00:00:50.000000000', '0 days 06:07:38.000000000',
'0 days 17:22:43.000000000'])
s = pd.to_timedelta(s).astype('timedelta64[m]').astype(int)
print(s)
0 1421
1 3125
2 0
3 367
4 1042
dtype: int32
此建议有效,但2天内无法转换。例如,在第二行中,它仅转换04:05:26df['new']=df['usage\u duration'].dt.seconds.div(60).astype(int)+df['usage\u duration'].dt.days.multiply(1440).astype(int)@JitheshErancheri-谢谢,我更改了答案。另一种更一般的方式可能是这里的报告:
s = pd.Series(['0 days 23:41:03.000000000', '2 days 04:05:26.000000000',
'0 days 00:00:50.000000000', '0 days 06:07:38.000000000',
'0 days 17:22:43.000000000'])
s = pd.to_timedelta(s).astype('timedelta64[m]').astype(int)
print(s)
0 1421
1 3125
2 0
3 367
4 1042
dtype: int32