Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将日期时间格式转换为分钟-熊猫_Python_Python 3.x_Pandas_Datetime_Series - Fatal编程技术网

Python 如何将日期时间格式转换为分钟-熊猫

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

我有一个数据帧,它有一个列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 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