【问题标题】:Unable to convert Dataframe object to datetime无法将 Dataframe 对象转换为日期时间
【发布时间】:2019-06-06 18:07:50
【问题描述】:

我一直在尝试将数据框对象转换为格式为 Y-m-d 的日期时间。我的数据如下:

pdi.head()

     Date                           Predicted_Linear_Regression
0   [2005-02-16T00:00:00.000000000] 0.000663
1   [1982-02-03T00:00:00.000000000] 0.000666
2   [1995-07-12T00:00:00.000000000] 0.000665
3   [1995-03-13T00:00:00.000000000] 0.000666
4   [2009-05-20T00:00:00.000000000] 0.000658

我尝试将Date 列转换为str,然后尝试转换为datetime,但无法转换。尝试直接转换但无法转换。

【问题讨论】:

  • 项目是否在Date 列表中?
  • 是不是只有一个 DT 的数组?
  • 它似乎是一个列表,但是当我这样做时pdi['Date'].dtype 它给了我dtype('O')
  • 这是因为列表属于pandas的“对象”类型。

标签: python-3.x pandas dataframe datetime


【解决方案1】:

您的Date 列包含日期列表,而不是日期。提取每个列表的第一个元素,然后转换为日期时间:

pd.to_datetime(df['Date'].str[0])

【讨论】:

  • 如果Date 是列表,它可以工作。如果Date 的类型是字符串,那么str[0] 会给你一些别的东西。
【解决方案2】:

如果您的df.Date 是list 类型,请尝试:

df.Date = pd.to_datetime(np.array(list(df.Date)).flatten())

如果是str类型,试试:

df.Date = pd.to_datetime(df.Date.str.slice(1,-1))

如果懒惰:

try:
    df.Date = pd.to_datetime(df.Date.str.slice(1,-1))
except:
    df.Date = pd.to_datetime(np.array(list(df.Date)).flatten())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-08
    • 2020-11-02
    • 2018-11-03
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多