日期列未转换为日期时间类型
date column not converting into datetime type
我有以下数据框 df:
Opname_start_date Opname_end_date
0 2016-11-21 11:33:00 2016-11-23 12:02:59.0000000
1 2016-07-06 09:16:00 2016-07-06 09:16:01.0000000
2 2016-08-11 10:18:00 2016-08-15 10:40:59.0000000
3 2016-09-23 11:28:00 2016-09-23 11:28:01.0000000
4 2016-08-11 14:06:00 2016-08-11 14:06:01.0000000
5 2016-10-26 09:42:00 2016-10-29 11:25:59.0000000
6 2016-12-02 15:03:00 2016-12-09 14:00:00.0000000
7 2016-07-08 09:00:00 2016-09-27 09:15:01.0000000
8 2016-06-14 09:01:00 2016-06-17 13:00:00.0000000
9 2016-12-08 13:54:00 2016-12-08 13:54:01.0000000
我想从 Opname_start_date 中减去 Opname_end_date 并想将其保存到新列中。我尝试了以下方法:
df['LOS'] = df['Opname_end_date'] - df['Opname_start_date']
但它给了我以下错误:
TypeError: ufunc subtract cannot use operands with types dtype('<U27') and dtype('<M8[ns]')
我检查了数据框的数据类型,它显示第一列是 datetime64[ns] 但第二列仍然是对象。我尝试使用 pd.to_datetime(df['Opname_end_date'])
转换第二列,但它仍然显示该列是对象类型并且不会抛出任何错误。
我无法弄清楚问题出在哪里。如果有人可以帮助我,那就太好了。谢谢
对我来说,通过 to_datetime
:
将列 Opname_end_date
转换为 datetimes
print (df.dtypes)
Opname_start_date datetime64[ns]
Opname_end_date object
dtype: object
df['LOS'] = pd.to_datetime(df['Opname_end_date']) - df['Opname_start_date']
或者:
df['Opname_end_date'] = pd.to_datetime(df['Opname_end_date'])
df['LOS'] = df['Opname_end_date'] - df['Opname_start_date']
print (df)
Opname_start_date Opname_end_date LOS
0 2016-11-21 11:33:00 2016-11-23 12:02:59.0000000 2 days 00:29:59
1 2016-07-06 09:16:00 2016-07-06 09:16:01.0000000 0 days 00:00:01
2 2016-08-11 10:18:00 2016-08-15 10:40:59.0000000 4 days 00:22:59
3 2016-09-23 11:28:00 2016-09-23 11:28:01.0000000 0 days 00:00:01
4 2016-08-11 14:06:00 2016-08-11 14:06:01.0000000 0 days 00:00:01
5 2016-10-26 09:42:00 2016-10-29 11:25:59.0000000 3 days 01:43:59
6 2016-12-02 15:03:00 2016-12-09 14:00:00.0000000 6 days 22:57:00
7 2016-07-08 09:00:00 2016-09-27 09:15:01.0000000 81 days 00:15:01
8 2016-06-14 09:01:00 2016-06-17 13:00:00.0000000 3 days 03:59:00
9 2016-12-08 13:54:00 2016-12-08 13:54:01.0000000 0 days 00:00:01
我有以下数据框 df:
Opname_start_date Opname_end_date
0 2016-11-21 11:33:00 2016-11-23 12:02:59.0000000
1 2016-07-06 09:16:00 2016-07-06 09:16:01.0000000
2 2016-08-11 10:18:00 2016-08-15 10:40:59.0000000
3 2016-09-23 11:28:00 2016-09-23 11:28:01.0000000
4 2016-08-11 14:06:00 2016-08-11 14:06:01.0000000
5 2016-10-26 09:42:00 2016-10-29 11:25:59.0000000
6 2016-12-02 15:03:00 2016-12-09 14:00:00.0000000
7 2016-07-08 09:00:00 2016-09-27 09:15:01.0000000
8 2016-06-14 09:01:00 2016-06-17 13:00:00.0000000
9 2016-12-08 13:54:00 2016-12-08 13:54:01.0000000
我想从 Opname_start_date 中减去 Opname_end_date 并想将其保存到新列中。我尝试了以下方法:
df['LOS'] = df['Opname_end_date'] - df['Opname_start_date']
但它给了我以下错误:
TypeError: ufunc subtract cannot use operands with types dtype('<U27') and dtype('<M8[ns]')
我检查了数据框的数据类型,它显示第一列是 datetime64[ns] 但第二列仍然是对象。我尝试使用 pd.to_datetime(df['Opname_end_date'])
转换第二列,但它仍然显示该列是对象类型并且不会抛出任何错误。
我无法弄清楚问题出在哪里。如果有人可以帮助我,那就太好了。谢谢
对我来说,通过 to_datetime
:
Opname_end_date
转换为 datetimes
print (df.dtypes)
Opname_start_date datetime64[ns]
Opname_end_date object
dtype: object
df['LOS'] = pd.to_datetime(df['Opname_end_date']) - df['Opname_start_date']
或者:
df['Opname_end_date'] = pd.to_datetime(df['Opname_end_date'])
df['LOS'] = df['Opname_end_date'] - df['Opname_start_date']
print (df)
Opname_start_date Opname_end_date LOS
0 2016-11-21 11:33:00 2016-11-23 12:02:59.0000000 2 days 00:29:59
1 2016-07-06 09:16:00 2016-07-06 09:16:01.0000000 0 days 00:00:01
2 2016-08-11 10:18:00 2016-08-15 10:40:59.0000000 4 days 00:22:59
3 2016-09-23 11:28:00 2016-09-23 11:28:01.0000000 0 days 00:00:01
4 2016-08-11 14:06:00 2016-08-11 14:06:01.0000000 0 days 00:00:01
5 2016-10-26 09:42:00 2016-10-29 11:25:59.0000000 3 days 01:43:59
6 2016-12-02 15:03:00 2016-12-09 14:00:00.0000000 6 days 22:57:00
7 2016-07-08 09:00:00 2016-09-27 09:15:01.0000000 81 days 00:15:01
8 2016-06-14 09:01:00 2016-06-17 13:00:00.0000000 3 days 03:59:00
9 2016-12-08 13:54:00 2016-12-08 13:54:01.0000000 0 days 00:00:01