Subtracting datetime, one column from another. Getting error: unsupported operand type(s) for -: 'str' and 'str'

Subtracting datetime, one column from another. Getting error: unsupported operand type(s) for -: 'str' and 'str'

  1. Jupyter 笔记本Python3.7
  2. 从一列中减去另一列的日期时间
  3. df['dropoff_datetime']
  4. df['pickup_datetime']
  5. 出现错误:不支持的操作数类型 - 'str' 和 'str'
  6. 求助!
  7. 代码:

    import numpy as np
    df['trip_minutes'] = df['dropoff_datetime'] - df['pickup_datetime']
    df['trip_minutes'] = df['trip_minutes']/np.timedelta64(1,'m')
    

您遇到此错误是因为您正在尝试计算不受支持的两个字符串的总和。

df
  dropoff_datetime pickup_datetime
0         00:07:56        00:10:44


df['dropoff_datetime'] - df['pickup_datetime']
Traceback (most recent call last):
TypeError: unsupported operand type(s) for -: 'str' and 'str'

要计算时差,您需要将数据框中的列设置为timedelta。然后你就可以进行计算了;

df['dropoff_datetime'] = pd.to_timedelta(df['dropoff_datetime'])
df['pickup_datetime'] = pd.to_timedelta(df['pickup_datetime'])

df['dropoff_datetime'] - df['pickup_datetime']

0   -1 days +23:57:12
dtype: timedelta64[ns]

编辑:

根据您更新的 df 信息,以上内容不适用于您指定的数据。但是,您可以 运行 DF 中每行下面的计算来检索值;

trip_minutes = datetime.strptime(df['dropoff_datetime'][0], '%d-%m-%Y %H:%M:%S %p') - datetime.strptime(df['pickup_datetime'][0], '%d-%m-%Y %H:%M:%S %p')

datetime.timedelta(seconds=815)

这会在您计算差异时将您的字符串转换为日期时间对象。