在尝试了太久之后,我的问题是:我有一个有20.000行的df。其中一栏包含病人住院的时间(H:M:S)。
所有的值都是类型的: datetime.time。例: 09:45:00。
有几个类型: datetime.datetime。例子: 1899-12-30 : 00:00:00。
df.info()将对象作为整个列的类型
如何将这几个datetime.datetime值转换为datetime.time?我试过这些。没有错误,但同时,类型没有变化.
import datetime as dt
for idx, value in enumerate(df.Opnametijd):
if type(value) == 'datetime.datetime':
value = pd.to_datetime.time, format='%H:%M:%S'.apply(pd.Timestamp)以及:
for idx, value in enumerate(df.Opnametijd):
if type(value) == 'datetime.datetime':
df.loc[idx,value] = pd.to_datetime.time, format='%H:%M:%S'.apply(pd.Timestamp)我还尝试删除不属于datetime.time类型的行,但这也不起作用:(index_names是类型: pandas.core.indexes.numeric.Int64Index)
index_names = df[ df'Opnametijd'] != 'datetime.time'].index
type(index_names)
df.drop(index_names,inplace=True)谢谢你提前提供帮助!问候简
发布于 2021-08-13 07:25:07
如果元素是datetime类的实例,则可以应用lambda函数返回datetime对象的时间部分,否则元素将保持原样。
例如:
from datetime import datetime
import pandas as pd
df = pd.DataFrame({'t': [datetime(2021,1,1,1,2,3).time(),
datetime(2021,1,1,1,2,3)]})
# df['t']
# 0 01:02:03
# 1 2021-01-01 01:02:03
# Name: t, dtype: object
df['t'] = df['t'].apply(lambda x: x.time() if isinstance(x, datetime) else x)
# df['t']
# 0 01:02:03
# 1 01:02:03
# Name: t, dtype: object附带注意:熊猫内置的日期时间数据类型不分别处理日期和时间。如果您想使用它(我认为它比标准的lib的datetime.time更方便),您必须提供一个日期(如果您没有将它用于某些事情,则可以是任意的)。
https://stackoverflow.com/questions/68767832
复制相似问题