【问题标题】:how to convert a string to timetuple in Python如何在 Python 中将字符串转换为时间元组
【发布时间】:2018-01-30 16:19:33
【问题描述】:

假设我有一个数据框:

df = {'date':['20170101', '20170102', '20170103', '20170104']}

我想将'20170101' 转换为'2017-01-01 00:00:00'

我怎样才能实现它?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您可以将日期时间字符串转换为datetime 对象。然后得到你想要的任何格式:

from datetime import datetime

datetime.strptime("20170103", "%Y%m%d").strftime("%Y-%m-%d %H:%M:%S")

输出:

"2017-01-03 00:00:00"

【讨论】:

    【解决方案2】:

    如果你有pandas.DataFrame,你可以这样做:

    代码:

    pd.to_datetime(df['date'], format='%Y%m%d')
    

    测试代码:

    df = pd.DataFrame({'date':['20170101', '20170102', '20170103', '20170104']})
    df['date2'] = df['date'].apply(lambda d: dt.datetime.strptime(d, '%Y%m%d'))
    df['date3'] = pd.to_datetime(df['date'], format='%Y%m%d')
    print(df)
    

    结果:

           date      date2      date3
    0  20170101 2017-01-01 2017-01-01
    1  20170102 2017-01-02 2017-01-02
    2  20170103 2017-01-03 2017-01-03
    3  20170104 2017-01-04 2017-01-04
    

    【讨论】:

      【解决方案3】:

      如果您知道字符串是如何构建的(即YYYYMMDD),您可以简单地使用:

      def f(s):
          return '{}-{}-{} 00:00:00'.format(s[:4],s[4:6],s[6:])
      s = '20170101'
      
      f(s)
      Out[7]: '2017-01-01 00:00:00'
      

      【讨论】:

        猜你喜欢
        • 2015-08-08
        • 2021-07-12
        • 2019-07-28
        • 2013-11-07
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多