首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将熊猫df列中的一些datetime.datetime值转换为datetime.time值

问如何将熊猫df列中的一些datetime.datetime值转换为datetime.time值
EN

Stack Overflow用户
提问于 2021-08-13 06:38:56
回答 1查看 85关注 0票数 0

在尝试了太久之后,我的问题是:我有一个有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?我试过这些。没有错误,但同时,类型没有变化.

代码语言:javascript
复制
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)

以及:

代码语言:javascript
复制
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)

代码语言:javascript
复制
index_names = df[ df'Opnametijd'] != 'datetime.time'].index
type(index_names)
df.drop(index_names,inplace=True)

谢谢你提前提供帮助!问候简

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 07:25:07

如果元素是datetime类的实例,则可以应用lambda函数返回datetime对象的时间部分,否则元素将保持原样。

例如:

代码语言:javascript
复制
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更方便),您必须提供一个日期(如果您没有将它用于某些事情,则可以是任意的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68767832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档