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'
- Jupyter 笔记本Python3.7
- 从一列中减去另一列的日期时间
- df['dropoff_datetime']
- df['pickup_datetime']
- 出现错误:不支持的操作数类型 - 'str' 和 'str'
- 求助!
代码:
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)
这会在您计算差异时将您的字符串转换为日期时间对象。
- Jupyter 笔记本Python3.7
- 从一列中减去另一列的日期时间
- df['dropoff_datetime']
- df['pickup_datetime']
- 出现错误:不支持的操作数类型 - 'str' 和 'str'
- 求助!
代码:
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)
这会在您计算差异时将您的字符串转换为日期时间对象。