【问题标题】:Datetime unix to ISO Pandas日期时间 unix 到 ISO Pandas
【发布时间】:2017-12-27 14:20:49
【问题描述】:

您好,我有这个数据框:

    TimeStamp       low      high      open     close      volume
0   1514331900  15699.54  15800.00  15699.55  15790.88   62.675508
1   1514331000  15651.57  15745.80  15662.01  15699.54   83.040542
2   1514330100  15661.00  15820.01  15820.01  15662.00   67.716571
3   1514329200  15780.00  15856.00  15780.01  15820.00   41.608696
4   1514328300  15780.00  15867.01  15789.98  15780.00   50.103055
5   1514327400  15719.00  15856.99  15856.99  15789.99  120.660673

我将时间戳设置为索引

df.set_index('TimeStamp')

我明白了

                  low      high      open     close      volume
TimeStamp                                                     
1514331900  15699.54  15800.00  15699.55  15790.88   62.675508
1514331000  15651.57  15745.80  15662.01  15699.54   83.040542
1514330100  15661.00  15820.01  15820.01  15662.00   67.716571
1514329200  15780.00  15856.00  15780.01  15820.00   41.608696
1514328300  15780.00  15867.01  15789.98  15780.00   50.103055

现在我想将时间戳转换为 ISO 人类可读的 DateTime。 所以我使用熊猫库

df.index = pd.to_datetime(df.index, unit='s')

但我没有得到预期的日期时间,我得到了这个:

                      TimeStamp       low      high      open     close  \
1970-01-01 00:00:00  1514331900  15699.54  15800.00  15699.55  15790.88   
1970-01-01 00:00:01  1514331000  15651.57  15745.80  15662.01  15699.54   
1970-01-01 00:00:02  1514330100  15661.00  15820.01  15820.01  15662.00   
1970-01-01 00:00:03  1514329200  15780.00  15856.00  15780.01  15820.00   
1970-01-01 00:00:04  1514328300  15780.00  15867.01  15789.98  15780.00

这不是正确的形式,因为如果我这样做:

>>> pd.to_datetime(1514331900, unit='s')
Timestamp('2017-12-26 23:45:00')

我得到了准确的日期。

我做错了什么?

【问题讨论】:

  • 我无法复制您的问题。你用的是什么版本的 Pandas?
  • 0.21.1 它适合你吗?
  • 这是inplacecopy 的问题。您需要将df.set_index('TimeStamp') 分配给df。基本上,df = df.set_index('TimeStamp') 或使用inplacedf.set_index('TimeStamp', inplace=True)。否则,您会将 range(len(df)) 转换为日期时间对象。
  • 哦,是的...您的第二个语句 set_index 必须重新分配为 Abdou。 df = df.set_index('TimeStamp').
  • 现在可以使用了!就用这个! df = df.set_index('TimeStamp') df.set 只返回一个 len.. 谢谢大家!

标签: python pandas datetime dataframe data-analysis


【解决方案1】:

问题解决了。

功能

df.set_index('TimeStamp')

要实际更改数据框,需要这样做:

df = df.set_index('TimeStamp') 

df.set_index('TimeStamp', inplace=True)

否则我们只是在转换一个 len

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 2019-09-15
    • 2013-11-11
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    相关资源
    最近更新 更多