【问题标题】:Combine date and time columns using datetime使用 datetime 组合日期和时间列
【发布时间】:2017-03-03 07:09:12
【问题描述】:

我正在尝试将日期组合到我的数据框中的多个时间列。我能够遍历每一行,但我对如何组合列感到困惑。例如:

   date        first_time   second_time .... 
0  2008/09/11    12:32        17:56
1  2016/12/02    06:43        14:02
2  2001/01/01    02:45        20:13
.
.
.

使用 .iterrows() 我可以将其分解为每一行。所以 row['date'] 将是该特定列的日期。但是,我需要使用 datetime 将日期与每一列结合起来。我不断收到我在网上找到的各种方法的错误。如果我有 row['date'] 和 row['first_time'],我如何将它们组合到数据框中(也包括日期和每隔一个时间列)?

最终的结果应该是这样的:

    first_datetime      second_datetime    .... 
0  2008/09/11 12:32     2008/09/11 17:56 
1  2016/12/02 06:43     2016/12/02 14:02 
2  2001/01/01 02:45     2001/01/01 20:13 
.
.
.

【问题讨论】:

    标签: python pandas datetime dataframe anaconda


    【解决方案1】:

    您可以先将set_index 与date 列一起使用,然后在time 列的循环中转换to_datetime:

    df = df.set_index('date')
    for col in df.columns:
        df[col] = pd.to_datetime(df.index + df[col], format='%Y/%m/%d%H:%M')
    #if necessary rename columns
    df.columns = df.columns.str.replace('time','datetime')
    df = df.reset_index(drop=True)
    print (df)
           first_datetime     second_datetime
    0 2008-09-11 12:32:00 2008-09-11 17:56:00
    1 2016-12-02 06:43:00 2016-12-02 14:02:00
    2 2001-01-01 02:45:00 2001-01-01 20:13:00
    
    print (df.dtypes)
    first_datetime     datetime64[ns]
    second_datetime    datetime64[ns]
    dtype: object
    

    对于更动态的解决方案,仅转换名称中带有 time 的列:

    df = df.set_index('date')
    #extract only time columns
    cols = df.columns[df.columns.str.contains('time')]
    for col in cols:
        df[col] = pd.to_datetime(df.index + df[col], format='%Y/%m/%d%H:%M')
    df.columns = df.columns.str.replace('time','datetime')
    df = df.reset_index(drop=True)
    print (df)
           first_datetime     second_datetime
    0 2008-09-11 12:32:00 2008-09-11 17:56:00
    1 2016-12-02 06:43:00 2016-12-02 14:02:00
    2 2001-01-01 02:45:00 2001-01-01 20:13:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-05
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多