首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从timedelta64转换为float时获取NaN

从timedelta64转换为float时获取NaN
EN

Stack Overflow用户
提问于 2021-10-29 04:44:20
回答 1查看 48关注 0票数 1

所以我有一个数据框,看起来像这样:

我使用以下代码计算了持续时间:

代码语言:javascript
运行
复制
df['dropoff_time'] = pd.to_datetime(df['tpep_dropoff_datetime'])
df['pickup_time'] = pd.to_datetime(df['tpep_pickup_datetime'])
df['duration'] = df['dropoff_time'] - df['pickup_time']

我正在尝试使用以下代码将出租车乘车的持续时间从timedelta64转换为float:

代码语言:javascript
运行
复制
df['duration'] = df[:5]['duration'] / np.timedelta64(1, 's')

但是,似乎第二次运行上面的代码从timedelta64转换为float时,我一直收到这样的消息:

下图显示了每列的数据类型:

所以我得到了duration列的float类型,这就是我想要的,然而,他们中的一些人返回了NaN值,如图所示,我真的不明白为什么我会得到这个值,以及如何解决这个问题……有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 05:31:07

问题是您只按[:5]过滤了前5个值,所以它只减去了3个值,pandas为所有其他行添加了NaN

代码语言:javascript
运行
复制
df['duration'] = df[:5]['duration'] / np.timedelta64(1, 's')
                 ^^^^^^^        
                  here

因此,解决方案是删除[:5]

代码语言:javascript
运行
复制
df['duration'] = (df['dropoff_time'] - df['pickup_time'])/ pd.Timedelta("1s")

或者:

代码语言:javascript
运行
复制
df['duration'] = (df['dropoff_time'] - df['pickup_time']).td.total_seconds()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69763742

复制
相关文章

相似问题

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