使用 python pandas 将 hh:mm:ss 转换为分钟
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 
原文地址: http://stackoverflow.com/questions/17951820/
Warning: these are provided under cc-by-sa 4.0 license.  You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Convert hh:mm:ss to minutes using python pandas
提问by richie
I have a dataframe column, data['time taken'];
我有一个数据框列,data['time taken'];
02:08:00
02:05:00
02:55:00
03:42:00
01:12:00
01:46:00
03:22:00
03:36:00
How do I get the output in the form of minutes like below?
如何以分钟的形式获得输出,如下所示?
128
125
175
222
72
106
202
216
采纳答案by waitingkuo
You could try to convert it to DatetimeIndex
您可以尝试将其转换为 DatetimeIndex
In [58]: time = pd.DatetimeIndex(df['time taken'])
In [59]: time.hour * 60 + time.minute
Out[59]: array([128, 125, 175, 222,  72, 106, 202, 216], dtype=int32)
回答by Andy Hayden
Assuming this is a string column you can use the str.splitmethod:
假设这是一个字符串列,您可以使用该str.split方法:
In [11]: df['time taken'].str.split(':')
Out[11]:
0    [02, 08, 00]
1    [02, 05, 00]
2    [02, 55, 00]
3    [03, 42, 00]
4    [01, 12, 00]
5    [01, 46, 00]
6    [03, 22, 00]
7    [03, 36, 00]
Name: time taken, dtype: object
And then use apply:
然后使用apply:
In [12]: df['time taken'].str.split(':').apply(lambda x: int(x[0]) * 60 + int(x[1]))
Out[12]:
0    128
1    125
2    175
3    222
4     72
5    106
6    202
7    216
Name: time taken, dtype: int64
回答by Jeff
A bit hacky as we don't directly support reading in timedeltas ATM
有点麻烦,因为我们不直接支持在 timedeltas ATM 中读取
In [9]: df = read_csv(StringIO(data),header=None)
In [10]: df
Out[10]: 
          0
0  02:08:00
1  02:05:00
2  02:55:00
3  03:42:00
4  01:12:00
5  01:46:00
6  03:22:00
7  03:36:00
Name: time, dtype: datetime64[ns]
In [13]: df['time'] = pd.to_datetime(df['time'])
In [18]: df['delta'] = df['time']-Timestamp('today')
In [19]: df
Out[19]: 
                 time    delta
0 2013-07-30 02:08:00 02:08:00
1 2013-07-30 02:05:00 02:05:00
2 2013-07-30 02:55:00 02:55:00
3 2013-07-30 03:42:00 03:42:00
4 2013-07-30 01:12:00 01:12:00
5 2013-07-30 01:46:00 01:46:00
6 2013-07-30 03:22:00 03:22:00
7 2013-07-30 03:36:00 03:36:00
In [20]: df.dtypes
Out[20]: 
time      datetime64[ns]
delta    timedelta64[ns]
dtype: object
In [22]: df['delta'].apply(lambda x: x/np.timedelta64(1,'m'))
Out[22]: 
0    128
1    125
2    175
3    222
4     72
5    106
6    202
7    216
Name: delta, dtype: float64

