所以我有一个数据框,看起来像这样:
我使用以下代码计算了持续时间:
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:
df['duration'] = df[:5]['duration'] / np.timedelta64(1, 's')
但是,似乎第二次运行上面的代码从timedelta64转换为float时,我一直收到这样的消息:
下图显示了每列的数据类型:
所以我得到了duration列的float类型,这就是我想要的,然而,他们中的一些人返回了NaN值,如图所示,我真的不明白为什么我会得到这个值,以及如何解决这个问题……有人能帮帮忙吗?
发布于 2021-10-29 05:31:07
问题是您只按[:5]
过滤了前5个值,所以它只减去了3个值,pandas为所有其他行添加了NaN
:
df['duration'] = df[:5]['duration'] / np.timedelta64(1, 's')
^^^^^^^
here
因此,解决方案是删除[:5]
df['duration'] = (df['dropoff_time'] - df['pickup_time'])/ pd.Timedelta("1s")
或者:
df['duration'] = (df['dropoff_time'] - df['pickup_time']).td.total_seconds()
https://stackoverflow.com/questions/69763742
复制相似问题