Pandas 将时间戳列转换为日期时间

新手上路,请多包涵

给定以下数据框和必要的争论:

 import pandas as pd
df=pd.DataFrame({'A':['a','b','c'],
        'dates':['2015-08-31 00:00:00','2015-08-24 00:00:00','2015-08-25 00:00:00']})
df.dates=df.dates.astype(str)
df['dates'] = pd.to_datetime(df.dates.str.split(',\s*').str[0])
set(df['dates'])

我最终得到:

 {Timestamp('2015-08-24 00:00:00'),
 Timestamp('2015-08-25 00:00:00'),
 Timestamp('2015-08-31 00:00:00')}

我需要将时间戳转换回日期时间(真的,只是日期)格式。

我已经根据 这篇文章 的答案尝试过这个:

 df['dates'].to_pydatetime()

但这会返回:

 AttributeError: 'Series' object has no attribute 'to_pydatetime'

在我的真实数据中,数据类型是: <M8[ns]

原文由 Dance Party 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 864
2 个回答

您可以使用 dt.date 返回一个 datetime.date 对象:

 In [3]:
set(df['dates'].dt.date)

Out[3]:
{datetime.date(2015, 8, 24),
 datetime.date(2015, 8, 25),
 datetime.date(2015, 8, 31)}

原文由 EdChum 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 apply 直接转换:

 df.dates = df.dates.apply(lambda x: x.date())

这会将之前的“日期”(作为时间戳)就地转换为截断的“日期时间”部分

原文由 RexBarker 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进