为什么日期时间会自动更改为对象数据类型?
why date-time is automatically changed to the object datatype?
需要将对象类型转换为日期时间,并使用转换后的日期时间在过滤时不知不觉地再次更改为对象。
msft['Tested On'] = pd.to_datetime(msft['Tested On'])
msft['Tested On'].dt.date
df = msft[msft['Tested On'] == '2018-02-02']
实际结果:
类型错误:'NoneType' 对象不可订阅
预期结果:
需要与其他行和列一起显示过滤后的列表
我想你需要 to_datetime
如果第一个数字是天,添加参数 dayfirst=True
:
print (msft)
Title plan run status Tested On
0 A P0 P0 Passed 11/08/2018 8:42 AM
1 B P0 P0 Failed 12/08/2018 8:42 AM
2 C - Canary Passed 10/08/2018 8:42 AM
3 D - Sanity Blocked 11/08/2018 8:42 AM
msft['Tested On'] = pd.to_datetime(msft['Tested On'], dayfirst=True)
print (msft)
Title plan run status Tested On
0 A P0 P0 Passed 2018-08-11 08:42:00
1 B P0 P0 Failed 2018-08-12 08:42:00
2 C - Canary Passed 2018-08-10 08:42:00
3 D - Sanity Blocked 2018-08-11 08:42:00
然后删除 dt.floor
的时间并比较:
df = msft[msft['Tested On'].dt.floor('d') == '2018-08-11']
print (df)
Title plan run status Tested On
0 A P0 P0 Passed 2018-08-11 08:42:00
3 D - Sanity Blocked 2018-08-11 08:42:00
详情:
print (msft['Tested On'].dt.floor('d'))
0 2018-08-11
1 2018-08-12
2 2018-08-10
3 2018-08-11
Name: Tested On, dtype: datetime64[ns]
需要将对象类型转换为日期时间,并使用转换后的日期时间在过滤时不知不觉地再次更改为对象。
msft['Tested On'] = pd.to_datetime(msft['Tested On'])
msft['Tested On'].dt.date
df = msft[msft['Tested On'] == '2018-02-02']
实际结果: 类型错误:'NoneType' 对象不可订阅
预期结果: 需要与其他行和列一起显示过滤后的列表
我想你需要 to_datetime
如果第一个数字是天,添加参数 dayfirst=True
:
print (msft)
Title plan run status Tested On
0 A P0 P0 Passed 11/08/2018 8:42 AM
1 B P0 P0 Failed 12/08/2018 8:42 AM
2 C - Canary Passed 10/08/2018 8:42 AM
3 D - Sanity Blocked 11/08/2018 8:42 AM
msft['Tested On'] = pd.to_datetime(msft['Tested On'], dayfirst=True)
print (msft)
Title plan run status Tested On
0 A P0 P0 Passed 2018-08-11 08:42:00
1 B P0 P0 Failed 2018-08-12 08:42:00
2 C - Canary Passed 2018-08-10 08:42:00
3 D - Sanity Blocked 2018-08-11 08:42:00
然后删除 dt.floor
的时间并比较:
df = msft[msft['Tested On'].dt.floor('d') == '2018-08-11']
print (df)
Title plan run status Tested On
0 A P0 P0 Passed 2018-08-11 08:42:00
3 D - Sanity Blocked 2018-08-11 08:42:00
详情:
print (msft['Tested On'].dt.floor('d'))
0 2018-08-11
1 2018-08-12
2 2018-08-10
3 2018-08-11
Name: Tested On, dtype: datetime64[ns]