【问题标题】:Difference in timestamp and result should also be in the same format时间戳和结果的差异也应该是相同的格式
【发布时间】:2021-08-25 07:56:44
【问题描述】:

我的数据如下所示:

|end_time------------|time----------------- |

|1947-08-15 05:30:00| 2020-09-18 16:44:52|       
|1947-08-15 05:30:00| 2020-09-18 16:45:17|      
|1947-08-15 05:30:00| 2020-10-12 14:26:58|       
|1947-08-15 05:30:00| 2020-10-12 16:10:56|     
|1947-08-15 05:30:00| 2020-10-12 16:11:30|

我想添加一个如下所示的新列:

--end_time----------| time------------------| Difference

|2021-08-16 23:50:26| 2021-08-17 00:20:48| 0:30:22       
|1947-08-15 05:30:00| 2020-09-18 16:45:17|      
|1947-08-15 05:30:00| 2020-10-12 14:26:58|       
|1947-08-15 05:30:00| 2020-10-12 16:10:56|     
|1947-08-15 05:30:00| 2020-10-12 16:11:30|

如何实现?

【问题讨论】:

    标签: scala dataframe apache-spark apache-spark-sql


    【解决方案1】:

    您在给定/预期中的时间列是不同的。忽略这一点并假设您的意思是两个日期时间列之间的时间差......

    创建框架:

    import pandas as pd
    from datetime import timedelta
    
    df = pd.DataFrame({'end_time': {0: '1947-08-15 05:30:00',
      1: '1947-08-15 05:30:00',
      2: '1947-08-15 05:30:00',
      3: '1947-08-15 05:30:00',
      4: '1947-08-15 05:30:00'},
     'time': {0: '2020-09-18 16:44:52',
      1: '2020-09-18 16:45:17',
      2: '2020-10-12 14:26:58',
      3: '2020-10-12 16:10:56',
      4: '2020-10-12 16:11:30'}})
                      
    df['end_time'] = pd.to_datetime(df['end_time'])
    df['time'] = pd.to_datetime(df['time'])
    

    那么:

    def diffTime(x, y):
        a = timedelta(hours=x.hour, minutes=x.minute, seconds=x.minute)
        b = timedelta(hours=y.hour, minutes=y.minute, seconds=y.minute)
        
        return pd.to_datetime(str(a - b),format= '%H:%M:%S' ).time()
    
    df['difference'] = df.apply(lambda x: diffTime(x['time'], x['end_time']), axis=1)
    
    print(df)
    

    输出:

                 end_time                   time    difference
    0 1947-08-15 05:30:00    2020-09-18 16:44:52      11:14:14
    1 1947-08-15 05:30:00    2020-09-18 16:45:17      11:15:15
    2 1947-08-15 05:30:00    2020-10-12 14:26:58      08:55:56
    3 1947-08-15 05:30:00    2020-10-12 16:10:56      10:39:40
    4 1947-08-15 05:30:00    2020-10-12 16:11:30      10:40:41
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2021-08-31
      • 2012-06-03
      • 1970-01-01
      • 2019-09-15
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多