【问题标题】:Change column from Pandas date object to python datetime将列从 Pandas 日期对象更改为 python 日期时间
【发布时间】:2019-09-28 00:33:39
【问题描述】:

我有一个数据集,第一列为日期,格式为:2011-01-01 和type(data_raw['pandas_date']) 给我pandas.core.series.Series

我想将整列转换为日期时间对象,以便根据需要从每一行中提取和处理年/月/日。

我使用了pd.to_datetime(data_raw['pandas_date']),它在输出的最后一行使用dtype: datetime64[ns] 打印输出。我假设值已转换为日期时间。

但是当我再次运行type(data_raw['pandas_date']) 时,它仍然显示pandas.core.series.Series 并且每当我尝试对其运行.dt 函数时,它都会给我一个错误,说这不是一个日期时间对象。

所以,我的问题是 - 看起来 to_datetime 函数将我的数据更改为 datetime 对象,但是如何将其应用/保存到 pandas_date 列?我试过了

data_raw['pandas_date'] = pd.to_datetime(data_raw['pandas_date'])

但这也不起作用,当我检查类型时得到相同的结果。抱歉,如果这太基本了。

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    type(data_raw['pandas_date']) 将始终返回 pandas.core.series.Series,因为对象 data_raw['pandas_date'] 的类型为 pandas.core.series.Series。你想要的是得到dtype,所以你可以做data_raw['pandas_date'].dtype

    data_raw['pandas_date'] = pd.to_datetime(data_raw['pandas_date'])

    这是正确的,如果你以后再做data_raw['pandas_date'].dtype,你会看到它是datetime[64]

    【讨论】:

    • 感谢您的快速回复。但是,当我使用data_raw['pandas_date'].dtype 通过键入以下内容来计算年份时:data_raw['pandas_date'].dtype.datetime.date.today().year 它给了我错误'numpy.dtype' object has no attribute 'datetime'。我很困惑大声笑
    • 见我上面的回答。使用import datetime as dt 将年份设为new.dt.year。此外,提取年份是一个单独的问题。因此,如果您的原始问题已得到解答,您应该接受答案并将第二个问题发布在单独的帖子中
    【解决方案2】:

    我认为答案只是您检查数据框类型的方式。如果我这样做:

    df = pd.DataFrame({'date': ['2011-01-01','2011-01-02','2011-01-13']})
    new = pd.to_datetime(df['date'])
    type(new)
    

    您将获得对象的“整体”类型,这是一个熊猫系列。但如果你这样做:

    new.dtypes
    

    你得到dtype('<M8[ns]'),日期时间对象。这是因为dtypes会列出dataframe每一列包含的数据类型,type只会告诉你它是一个dataframe。

    【讨论】:

      猜你喜欢
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      相关资源
      最近更新 更多