Map*_* Yu 5 python datetime series python-3.x pandas
我自己刚刚学习 Pandas,遇到了一些问题。
在从 csv 文件读取的 DataFrame 中,我有一列包含不同格式的日期数据(例如'%m/%d/%Y'
和'%Y-%m-%d'
,可能为空白。),我想统一该列的格式。但不知道还有没有其他格式。因此,当我使用时pd.to_datetime()
,它引发了一些错误,例如格式不匹配和非仿时数据。如何统一该栏目的格式?
我已将该列的一部分转换为日期时间数据类型,并且它是YYYY-mm-dd
格式的。我可以保留日期时间数据类型,并将格式更改为 吗'%m/%d/%Y'
?我已经使用过pd.dt.strftime()
,它会更改格式,但也会将 dtype 更改为 str,而不保留 datetime dtype。
因此,当我使用 pd.to_datetime() 时,它引发了一些错误,例如格式不匹配和非类时数据。如何统一该栏目的格式?
使用该errors='coerce'
选项可以返回NaT
(Not a Time)未转换的值。另请注意,format
参数不是必需的。省略它将使 Pandas 能够尝试多种格式,失败时它将恢复为NaT
1。例如:
df['datetime'] = pd.to_datetime(df['datetime'], errors='coerce')
Run Code Online (Sandbox Code Playgroud)
请注意,混合类型可能会被错误地解释。例如,Python 如何知道是05/06/2018
6 月 5 日还是 5 月 6 日?将应用约定的顺序,如果您需要更好的控制,则需要自己应用自定义的顺序。
我可以保留日期时间数据类型,并将格式更改为“%m/%d/%Y”吗?
你不能。datetime
系列在内部存储为整数。任何人类可读的日期表示都只是表示,而不是底层整数。要访问自定义格式,您可以使用 Pandas 中提供的方法。您甚至可以将这样的文本表示形式存储在pd.Series
变量中:
formatted_dates = df['datetime'].dt.strftime('%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)
of将会是,它dtype
表明系列的元素指向任意 Python 时间。在这种情况下,那些任意类型恰好都是字符串。formatted_dates
object
最后,我强烈建议您在工作流程的最后一步之前不要将系列转换为字符串。datetime
这是因为一旦您这样做,您将无法再对此类序列使用高效的矢量化操作。
1这会牺牲性能,与datetime.strptime
需要指定格式的 相比。在内部,Pandas 使用该dateutil
库,如文档中所示。
归档时间: |
|
查看次数: |
2657 次 |
最近记录: |