【问题标题】:How to calculate time difference between two pandas column [duplicate]如何计算两个熊猫列之间的时间差[重复]
【发布时间】:2018-12-25 03:36:27
【问题描述】:

我的 df 看起来像,

    start               stop
0   2015-11-04 10:12:00 2015-11-06 06:38:00
1   2015-11-04 10:23:00 2015-11-05 08:30:00
2   2015-11-04 14:01:00 2015-11-17 10:34:00
4   2015-11-19 01:43:00 2015-12-21 09:04:00

print(time_df.dtypes)

start       datetime64[ns]
stop        datetime64[ns]

dtype: 对象

我试图找出停止和开始之间的时间差。

我试过了,pd.Timedelta(df_time['stop']-df_time['start']) 但它给了TypeError: data type "datetime" not understood

df_time['stop']-df_time['start'] 也给出同样的错误。

我的预期输出,

 2D,?H
 1D,?H
 ...
 ...

【问题讨论】:

    标签: python pandas dataframe data-analysis


    【解决方案1】:

    你需要省略pd.Timedelta,因为时间差返回timedeltas:

    df_time['td'] = df_time['stop']-df_time['start']
    print (df_time)
                    start                stop               td
    0 2015-11-04 10:12:00 2015-11-06 06:38:00  1 days 20:26:00
    1 2015-11-04 10:23:00 2015-11-05 08:30:00  0 days 22:07:00
    2 2015-11-04 14:01:00 2015-11-17 10:34:00 12 days 20:33:00
    

    编辑:另一种解决方案是减去 numpy 数组:

    df_time['td'] = df_time['stop'].values - df_time['start'].values
    print (df_time)
                    start                stop               td
    0 2015-11-04 10:12:00 2015-11-06 06:38:00  1 days 20:26:00
    1 2015-11-04 10:23:00 2015-11-05 08:30:00  0 days 22:07:00
    2 2015-11-04 14:01:00 2015-11-17 10:34:00 12 days 20:33:00
    

    【讨论】:

    • 也试过了,TypeError: data type "datetime" not understood
    • @pyd - 你的熊猫版本是什么?
    • 唯一的想法 - df_time['td'] = df_time['stop'].values - df_time['start'].values
    • @pyd - 然后使用df_time['td'] = np.abs(df_time['stop'].values - df_time['start'].values)
    • @pyd - 你可以检查this - 永远不要这样做,所以没有经验
    【解决方案2】:

    首先确保您的列中有日期

    data.loc[:, 'start'] = pd.to_datetime(data.loc[:, 'start'])
    data.loc[:, 'stop'] = pd.to_datetime(data.loc[:, 'stop'])
    

    然后减法

    data['delta'] = data['stop'] - data['start']
    

    【讨论】:

    • 我猜这只是一个错字,但为了确定:有时你写 time_df 而其他时候写 df_time
    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2017-06-16
    • 2017-09-06
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多