【问题标题】:Pandas DataFrame Date Series to List conversionPandas DataFrame 日期系列到列表转换
【发布时间】:2018-01-06 14:15:04
【问题描述】:

我有一个名为“signal_data”的数据框,其数据如下

Pressure   DateTime             Temp
3025       2016-04-01 00:17:00  TTY    
3019       2016-04-01 00:17:00  TTY    
3019       2016-04-01 00:17:00  TTY    
.....          
3025       2016-05-01 10:17:00  TTY    
.....

我正在尝试从 DateTime 列中获取唯一值并转换为列表。 当我应用以下命令时,日期时间值将转换为 int 而不是日期时间。

signal_data['DateTime'].unique().tolist()

[1459469820000000000,    
 1459516620000000000,    
 1459527420000000000,    
 ...    
 1462087020000000000]

我可以知道为什么会发生这种情况以及如何解决这个问题吗?

【问题讨论】:

  • print(signal_data['DateTime'].dtypes) 说什么?

标签: python pandas


【解决方案1】:

当您调用unique() 时,它会返回一个日期时间类型的numpy 数组。 Numpy datetime 不是 python 的基本数据类型。当您将其转换为列表时,它会尝试将数据类型更改为 pythonic 版本。所以你得到了int。所以使用list(..) 来保持日期时间不变。即

list(df['DateTime'].unique()) 
[numpy.datetime64('2016-04-01T00:17:00.000000000')]

OR convert it to series and then tolist()

pd.Series(df['DateTime'].unique()).tolist()
[Timestamp('2016-04-01 00:17:00')]

【讨论】:

    【解决方案2】:

    我不太确定为什么 Pandas 会隐式转换它。但是,您可以通过执行以下操作来修复它(假设您已完成 import pandas as pd):

    pd.to_datetime(signal_data['DateTime'].unique()).tolist()
    

    【讨论】:

    • 谢谢..它有效..以下也有效
    • list(set([x for x in signal_data['DateTime']]))
    • set() 的调用中不需要列表理解。直接在 Series 上调用即可。
    猜你喜欢
    • 2019-11-28
    • 2015-08-08
    • 2021-03-01
    • 2013-11-04
    • 2022-01-19
    • 2018-02-02
    • 2015-03-23
    • 2017-02-11
    • 2021-04-14
    相关资源
    最近更新 更多