仅解析小时:分钟:秒使用熊猫

时间:2017-12-18 20:52:14

标签: python pandas

我有以下数据:

Guava

我用以下方式解析大熊猫:

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
...

第一列是Hour:Minutes:Seconds,我的意图是pandes以这种方式解析它。但是它创建了以下内容:

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)

任何摆脱年月日的方式都会增加?

此致 最大

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

IIUC你的问题是什么,我改变了你的数据框的时间列名,

df.rename(columns={0:'Time'}, inplace= True)
df
Time            1         2         3         4         5         6         7 
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...

现在我可以将您的时间列更改为timedelta64[ns]

df.Time = pd.to_timedelta(df.Time)
df

当我输入df.dtypes时,我明白了,

Time    timedelta64[ns]
1                object
2               float64
3               float64
4               float64
5               float64
6               float64
7               float64
dtype: object

因此,您必须将列转换为timedelta,您的seaborn图应该有效。