我有这个.csv文件包含看起来像这样的数据
"Time","CH-1[V]","CH-2[V]","CH-3[V]",
0.000000000E+00,-4.07000E-01, 3.01000E-01,-4.40000E-01,
1.000000000E+01,-4.11000E-01, 3.01000E-01,-4.29000E-01,
2.000000000E+01,-3.99000E-01, 3.01000E-01,-4.15000E-01,
3.000000000E+01,-3.87000E-01, 3.01000E-01,-4.09000E-01,
4.000000000E+01,-3.79000E-01, 3.00000E-01,-4.15000E-01,
"时间"列以秒为单位。该文件还包含格式为14-10-25 16:07:40
的触发时间,它是时间的起点。
我想将第一列更改为Time*TriggerTime
。
我到目前为止所有的功能都是将triggertime转换为datetime和
parse = lambda x: dt.datetime.strptime(x, '%S')
content2 = pd.read_csv(current_file, parse_dates=['Time'], index_col=0, date_parser=parse)
但我似乎遇到了错误:
ValueError: time data ' 0.000000000E+00' does not match format '%S'
我无法解决。
有任何帮助吗? :)
答案 0 :(得分:1)
In [9]: df = pd.read_csv(StringIO(data), index_col=0)
In [10]: df
Out[10]:
CH-1[V] CH-2[V] CH-3[V] Unnamed: 4
Time
0 -0.407 0.301 -0.440 NaN
10 -0.411 0.301 -0.429 NaN
20 -0.399 0.301 -0.415 NaN
30 -0.387 0.301 -0.409 NaN
40 -0.379 0.300 -0.415 NaN
将以秒为单位的列转换为Timedelta,然后将其添加到Timestamp
In [13]: pd.to_timedelta(df.index,unit='s') + pd.Timestamp('20141015 16:07:40')
Out[13]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-10-15 16:07:40, ..., 2014-10-15 16:08:20]
Length: 5, Freq: None, Timezone: None
In [14]: (pd.to_timedelta(df.index,unit='s') + pd.Timestamp('20141015 16:07:40')).tolist()
Out[14]:
[Timestamp('2014-10-15 16:07:40'),
Timestamp('2014-10-15 16:07:50'),
Timestamp('2014-10-15 16:08:00'),
Timestamp('2014-10-15 16:08:10'),
Timestamp('2014-10-15 16:08:20')]