Skip to main content
 首页 » 编程设计

python之仅解析小时 :Minute:Second using pandas

2025年05月04日21xing901022

我有以下数据:

23:10:50        all     28.36      0.00      0.38      0.25      0.00     71.02 
23:10:51        all     22.77      0.00      0.84      0.12      0.00     76.27 
23:10:52        all     32.06      0.00      0.86      0.00      0.00     67.08 
23:10:53        all     31.38      0.00      0.61      0.00      0.00     68.01 
23:10:54        all     27.17      0.00      1.36      0.25      0.00     71.22 
23:10:55        all     37.48      0.00      0.75      0.00      0.00     61.77 
23:10:56        all     29.02      0.00      0.75      1.76      0.00     68.47 
23:10:57        all     41.82      0.00      1.37      0.12      0.00     56.68 
23:10:58        all     29.01      0.00      1.10      0.00      0.00     69.89 
23:10:59        all     37.00      0.00      1.50      1.88      0.00     59.62 
23:11:00        all     44.25      0.00      1.12      0.00      0.00     54.62 
23:11:01        all     27.72      0.00      0.62      0.00      0.00     71.66 
23:11:02        all     30.71      0.00      1.11      0.00      0.00     68.18 
23:11:03        all     27.40      0.00      0.62      0.00      0.00     71.98 
... 

我用以下方式用 pandas 解析:

dateparse = lambda x: pd.datetime.strptime(x, '%H:%M:%S') 
 
data = pd.read_csv('../../data/cpu.dat', delim_whitespace=True, header=None, usecols=[0,2,4,7], names=['Time','User','System','Idle'], parse_dates=[0], date_parser=dateparse) 

第一列是小时:分钟:秒,我的意图是让 pandes 以这种方式解析它。但是它会创建以下内容:

0    1900-01-01 23:10:50 
1    1900-01-01 23:10:51 
2    1900-01-01 23:10:52 
3    1900-01-01 23:10:53 
4    1900-01-01 23:10:54 
5    1900-01-01 23:10:55 
6    1900-01-01 23:10:56 
7    1900-01-01 23:10:57 
8    1900-01-01 23:10:58 
9    1900-01-01 23:10:59 
10   1900-01-01 23:11:00 
11   1900-01-01 23:11:01 
12   1900-01-01 23:11:02 
13   1900-01-01 23:11:03 

有什么方法可以去除添加的年月日?

问候, 最大

请您参考如下方法:

试试这个,其中 timestr 是包含时间字符串表示的列的名称:

data['time'] = pd.to_datetime(data['timestr']).dt.time