【问题标题】:Split datetime column into separate date and time columns将日期时间列拆分为单独的日期和时间列
【发布时间】:2018-08-28 07:16:21
【问题描述】:

我正在尝试从时间戳中提取日期和时间:

DateTime   
31/12/2015 22:45

成为:

   Date   |  Time   |
31/12/2015|  22:45  |

但是当我使用时:

df['Date'] = pd.to_datetime(df['DateTime']).dt.date

我明白了:

2015-12-31

与我得到的时间类似:

df['Time'] = pd.to_datetime(df['DateTime']).dt.time

给了

23:45:00

但如果我尝试格式化它,我会收到错误:

df['Date'] = pd.to_datetime(f['DateTime'], format='%d/%m/%Y').dt.date

ValueError: unconverted data remains:  00:00

【问题讨论】:

    标签: python pandas date datetime time


    【解决方案1】:

    选项 1
    由于您实际上并不需要对 dates 本身进行操作,因此只需将您的列拆分为空间:

    df = df.DateTime.str.split(expand=True)   
    df.columns = ['Date', 'Time']
    

    df
             Date   Time
    0  31/12/2015  22:45
    

    选项 2
    或者,完全删除格式说明符:

    v = pd.to_datetime(df['DateTime'], errors='coerce')
    
    df['Time'] = v.dt.time
    df['Date'] = v.dt.floor('D')
    

    df
           Time       Date
    0  22:45:00 2015-12-31
    

    【讨论】:

      【解决方案2】:

      试试 strftime

      df['DateTime'] = pd.to_datetime(df['DateTime'])
      df['Date'] = df['DateTime'].dt.strftime('%d/%m/%Y')
      df['Time'] = df['DateTime'].dt.strftime('%H:%M')
      
      
          DateTime            Date        Time
      0   2015-12-31 22:45:00 31/12/2015  22:45
      

      【讨论】:

        【解决方案3】:

        如果您的DateTime 列已经是日期时间类型,则无需调用pd.to_datetime

        您是在寻找字符串("12:34")还是时间戳(12:34 在下午的概念)?如果您正在寻找前者,这里有涵盖该问题的答案。如果您正在寻找后者,您可以使用.dt.time.dt.date 访问器。

        >>> pd.__version__
        u'0.20.2'
        >>> df = pd.DataFrame({'DateTime':pd.date_range(start='2018-01-01', end='2018-01-10')})
        >>> df['date'] = df.DateTime.dt.date
        >>> df['time'] = df.DateTime.dt.time
        >>> df
            DateTime        date      time
        0 2018-01-01  2018-01-01  00:00:00
        1 2018-01-02  2018-01-02  00:00:00
        2 2018-01-03  2018-01-03  00:00:00
        3 2018-01-04  2018-01-04  00:00:00
        4 2018-01-05  2018-01-05  00:00:00
        5 2018-01-06  2018-01-06  00:00:00
        6 2018-01-07  2018-01-07  00:00:00
        7 2018-01-08  2018-01-08  00:00:00
        8 2018-01-09  2018-01-09  00:00:00
        9 2018-01-10  2018-01-10  00:00:00
        

        【讨论】:

          猜你喜欢
          • 2018-01-14
          • 2016-06-06
          • 1970-01-01
          • 1970-01-01
          • 2013-10-18
          • 2021-07-27
          • 1970-01-01
          相关资源
          最近更新 更多