从熊猫数据框中的日期时间中删除时间戳
Posted
技术标签:
【中文标题】从熊猫数据框中的日期时间中删除时间戳【英文标题】:Removing the timestamp from a datetime in pandas dataframe 【发布时间】:2018-02-02 03:09:58 【问题描述】:场景:我有一个数据框,其中包含从 excel 工作表中检索到的多列。其中一些列是日期:一些只有日期 (yyyy:mm:dd),一些有日期和时间戳 (yyyy:mm:dd 00.00.000000)。
问题:当日期不是我的数据帧的索引时,如何从日期中删除时间戳?
我已经尝试过的: 从 SO(working with dates in pandas - remove unseen characters in datetime and convert to string 和 How to strip a pandas datetime of date, hours and seconds)的其他帖子中我发现:
pd.DatetimeIndex(dfST['timestamp']).date
和
strfitme (df['timestamp'].apply(lambda x: x.strftime('%Y-%m-%d'))
但是当它不是我的数据框的索引时,我似乎无法找到将它们直接用于所需列的方法。
【问题讨论】:
如果您已经转换为日期时间,则无需创建DatetimeIndex
。您可以使用 dt 访问器重新分配列:dfST['timestamp'] = dfST['timestamp'].dt.date
各列的数据类型是什么?你说的But I can't seem to find a way to use those directly to the wanted column when it is not the index of my dataframe.
是什么意思
@AndrewL 刚试过,我得到:“AttributeError: Can only use .dt accessor with datetimelike values”
@MaartenFabré 我想它们是日期时间值。我的意思是当日期列是索引时,我的 OP 中的行有效,但不适用于我在数据框中的其他日期列。
可能重复? ***.com/questions/26882499/…
【参考方案1】:
您可以执行以下操作:
dfST['timestamp'] = pd.to_datetime(dfST['timestamp'])
to_datetime()
将推断日期列的格式。如果列包含非日期值,您也可以传递 errors='coerce'
。
完成上述操作后,您将能够创建一个仅包含日期值的新列:
dfST['new_date_column'] = dfST['timestamp'].dt.date
【讨论】:
谢谢!我使用 dfST['timestamp'] = pd.to_datetime(dfST['timestamp']).dt.date 用我想要的日期格式覆盖时间戳。以上是关于从熊猫数据框中的日期时间中删除时间戳的主要内容,如果未能解决你的问题,请参考以下文章