【问题标题】:python how to change the time format from csv filepython如何从csv文件更改时间格式
【发布时间】:2018-11-01 09:48:40
【问题描述】:

使用pd.read_csv() 后,我得到以下数据。但是在第一列中,时间格式是错误的。你能告诉我如何纠正它吗?谢谢。 数据如下,第一列应该是 2017/4/10 9:25:00 而不是 42835.39236。

     datetime   open   high    low  close
0  42835.39236  20.72  20.72  20.72  20.72
1  42835.39583  20.72  20.72  20.67  20.67
2  42835.39653  20.66  20.67  20.62  20.63
3  42835.39722  20.63  20.65  20.59  20.59
4  42835.39792  20.59  20.59  20.52  20.52

【问题讨论】:

  • 输入的样子如何?您是否将任何参数传递给 pd.read_csv()?
  • 看起来像是一些相对时间,不是吗?

标签: python dataframe time


【解决方案1】:

要获得正确的日期,请使用:

import datetime as dt

df['datetime'] = pd.TimedeltaIndex(df['datetime'], unit='d') + dt.datetime(1899, 12, 30)

这将产生:

                 datetime   open   high    low  close
0 2017-04-10 09:24:59.904  20.72  20.72  20.72  20.72
1 2017-04-10 09:29:59.712  20.72  20.72  20.67  20.67
2 2017-04-10 09:31:00.192  20.66  20.67  20.62  20.63
3 2017-04-10 09:31:59.808  20.63  20.65  20.59  20.59
4 2017-04-10 09:33:00.288  20.59  20.59  20.52  20.52

编辑

要将datetime 拆分为datetime,请使用:

df['date'] = df['datetime'].dt.date
df['time'] = df['datetime'].dt.ceil('min').dt.time
df
#                 datetime   open   high    low  close        date      time
#0 2017-04-10 09:24:59.904  20.72  20.72  20.72  20.72  2017-04-10  09:25:00
#1 2017-04-10 09:29:59.712  20.72  20.72  20.67  20.67  2017-04-10  09:30:00
#2 2017-04-10 09:31:00.192  20.66  20.67  20.62  20.63  2017-04-10  09:32:00
#3 2017-04-10 09:31:59.808  20.63  20.65  20.59  20.59  2017-04-10  09:32:00
#4 2017-04-10 09:33:00.288  20.59  20.59  20.52  20.52  2017-04-10  09:34:00

【讨论】:

  • 没错。而且我还想问如何将第一列分成两部分。就像第一行是“2017-04-10 09:24:59.904”一样,我想得到两列:2017-04-10 和 09:25:00。谢谢。 @zipa
  • 我明白了。最后一个问题是因为时间太长了。我怎样才能将时间更改为我们的正常方式。例如,09:24:59.904000 更改为 09:25:00。 @zipa
【解决方案2】:

只需使用pd.to_datetime:

In [741]: df
Out[741]: 
          date
0  42835.39236

In [742]: df['date'] = df['date'].apply(pd.to_datetime)

In [743]: df
Out[743]: 
                           date
0 1970-01-01 00:00:00.000042835

Pandas 会将其转换为日期时间。

【讨论】:

    【解决方案3】:
    import datetime
    

    试试这个:

    tt = pd.read_csv('aa.csv', parse_dates=True)
    
    print(tt)
    

    它会打印如下/按照预期,对不起,我是这个 stackoverflow 的新手,但这个答案有效。

    datetime        open       high       low       close
    
    9:25:00 AM      20.72      20.72      20.72      20.72
    
    9:30:00 AM      20.72      20.72      20.67      20.67
    
    9:31:00 AM      20.66      20.67      20.62      20.63
    
    9:32:00 AM      20.63      20.65      20.59      20.59
    
    9:33:00 AM      20.59      20.59      20.52      20.52
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2015-09-27
      • 2011-07-27
      • 2015-12-27
      相关资源
      最近更新 更多