【问题标题】:Python3 Pandas column in seconds以秒为单位的 Python3 Pandas 专栏
【发布时间】:2015-02-18 13:07:28
【问题描述】:

我有这个 .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

到目前为止,我得到的只是一个将触发时间转换为日期时间的函数

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'

我无法解决。

有什么帮助吗? :)

【问题讨论】:

    标签: python datetime csv python-3.x pandas


    【解决方案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,然后将其添加到时间戳

    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')]
    

    【讨论】:

    • 非常感谢。但我似乎无法让它工作,不断收到错误 ValueError: Invalid type for timedelta scalar:
    • 你需要 0.15.2(或者,如果你只有 0.15.0,你也需要 pd.Int64Index(df.index))代替 df.index
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多