如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式

Posted

技术标签:

【中文标题】如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式【英文标题】:How do I convert dates into ISO-8601 DateTime format in a Pandas dataframe 【发布时间】:2013-09-08 05:21:17 【问题描述】:

我有下面的数据框(使用 python/pandas)并希望转换

q_string          q_visits  q_date
red               1790  02/10/2012 00:00
blue              364   02/10/2012 00:00
current           280   02/10/2012 00:00
molecular         259   02/10/2012 00:00
cell              201   02/10/2012 00:00

如何将“q_date”字段转换为 SO-8601 日期时间格式 (yyyy-MM-ddTHH:mm:ssZ)?

提前致谢。

【问题讨论】:

【参考方案1】:

我会使用pd.to_datetime.dt accessor

pd.to_datetime(df['q_date']).dt.strftime('%Y-%m-%dT%H:%M:%SZ')

另见strftime() and strptime() Format Codes

【讨论】:

【参考方案2】:

使用 pandas datetools 解析器解析日期,然后使用标准 python strftime 函数对其进行格式化。

>>> df['q_date'].apply(
        lambda x: pd.datetools.parse(x).strftime('%Y-%m-%dT%H:%M:%SZ'))
0    20120210T00:0000Z
1    20120210T00:0000Z
2    20120210T00:0000Z
3    20120210T00:0000Z
4    20120210T00:0000Z
Name: q_date, dtype: object

【讨论】:

viktor 将其保留为对象 dtype,所以没那么有用,最好使用 to_datetime @Jeff我同意,只是OP要求一个字符串,我写的方法比pd.to_datetime(df['q_date']).apply(lambda x: x.strftime(...))快一点所以我选择了那个。 我认为M 后面的% 符号不应该存在。对我来说,使用 pandas v 1.2.4 的格式化字符串是 '%Y-%m-%dT%H:%M:%SZ'【参考方案3】:

首先将您的q_date 列转换为datetime64[ns] 系列,然后使用自定义格式字符串将map 转换为列

In [178]: df = df.convert_objects(convert_dates='coerce')

In [179]: df
Out[179]:
    q_string  q_visits              q_date
0        red      1790 2012-02-10 00:00:00
1       blue       364 2012-02-10 00:00:00
2    current       280 2012-02-10 00:00:00
3  molecular       259 2012-02-10 00:00:00
4       cell       201 2012-02-10 00:00:00

In [180]: df['iso_q_date'] = df.q_date.map(lambda x: datetime.datetime.strftime(x, '%y%m%dT%H:%M%SZ'))

In [181]: df
Out[181]:
    q_string  q_visits              q_date       iso_q_date
0        red      1790 2012-02-10 00:00:00  120210T00:0000Z
1       blue       364 2012-02-10 00:00:00  120210T00:0000Z
2    current       280 2012-02-10 00:00:00  120210T00:0000Z
3  molecular       259 2012-02-10 00:00:00  120210T00:0000Z
4       cell       201 2012-02-10 00:00:00  120210T00:0000Z

【讨论】:

以上是关于如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式的主要内容,如果未能解决你的问题,请参考以下文章

特定 ISO 格式的 Pandas 日期时间转换

如何在python中将字符串转换为pandas数据框[重复]

在熊猫数据框中将不同的日期时间格式转换为 MM/DD/YYYY 格式

如何在 PHP 中将日期时间转换为 ISO 8601

如何在php中将ISO8601转换为日期格式

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?