我有以下数据:
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)
任何摆脱年月日的方式都会增加?
此致 最大
答案 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
图应该有效。