【问题标题】:Inconsistent Datetime format in PandasPandas 中的日期时间格式不一致
【发布时间】:2017-03-31 07:49:49
【问题描述】:

我在数据框中有一些 2015 年 8 月的数据,格式如下:

Timestamp                  Value

2015-12-08 23:58:00          3.4 
2015-12-08 23:59:00          3.2
2015-08-13 00:00:00          1.1
2015-08-13 00:01:00          0.9

有两种格式可用 yy-dd-mm 和 yy-mm-dd(从 8 月 13 日开始)。我正在努力将它们转换为通用格式。任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 这是一个难题,需要您提供的模糊逻辑和更多数据。使用你所拥有的,我可以确定我应该将 '2015-12-08' 转换为 '2015-08-12' 但这只是在它旁边的上下文中。关键是,这不是熊猫问题。相反,你会因为搞砸数据问题而大喊大叫。
  • 我有从 8 月 1 日到 8 月 31 日的全月数据。问题是从 Aug/01 到 Aug/12 的数据的日期格式是 yy-dd-mm,而从 Aug/13 到 Aug/31 的数据格式是 yy-mm-dd。我只需要一致的日期时间格式而不更改值列。
  • 你怎么知道它8月份的数据?而不是 12 月的数据?回答这个问题可以提供清理过程中的逻辑。

标签: python datetime pandas datetime-format


【解决方案1】:

首先,将字符串转换为数据时间,以预期的正确格式开始,并要求忽略错误:

df['Correct'] = pd.to_datetime(df.Timestamp,
                               format='%Y-%d-%m %H:%M:%S',
                               errors='coerce')


df.Correct
Out[34]: 
0   2015-08-12 23:58:00
1   2015-08-12 23:59:00
2                   NaT
3                   NaT
Name: Correct, dtype: datetime64[ns]

现在您知道在哪里应用第二种格式了:

df.Correct.update(pd.to_datetime(df[df.Correct.isnull()].Timestamp,
                                 format='%Y-%m-%d %H:%M:%S',
                                 errors='coerce'))
df
Out[36]: 
             Timestamp  Val             Correct
0  2015-12-08 23:58:00  3.4 2015-08-12 23:58:00
1  2015-12-08 23:59:00  3.2 2015-08-12 23:59:00
2  2015-08-13 00:00:00  1.1 2015-08-13 00:00:00
3  2015-08-13 00:01:00  0.9 2015-08-13 00:01:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2016-08-17
    • 2018-02-16
    • 2019-04-28
    • 2021-11-10
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多