微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas分配Lambda函数

我有一个DataFrame,它有一个开放时间和一个关闭时间,我试图计算差异,以毫秒为单位.

我的代码目前是这样的

df = df.assign(Latency=lambda d: d.CloseTimeStamp - d.CreationTimeStamp)
df.Latency = df.apply(lambda d: d.Latency.total_seconds() * 1000., axis=1)

但是,我想知道为什么我不能像这样的单行

df = df.assign(Latency=lambda d: (d.CloseTimeStamp - d.CreationTimeStamp).total_seconds() * 1000.)

当我尝试后者时,我得到了AttributeError:’Series’对象没有属性’total_seconds’

解决方法:

总秒数在.dt属性中,所以这应该工作:

df = df.assign(Latency=lambda d: (d.CloseTimeStamp - d.CreationTimeStamp).dt.total_seconds() * 1000.)

话虽如此,不需要lambda函数

df = df.assign(Latency=(df.CloseTimeStamp - df.CreationTimeStamp).dt.total_seconds() * 1000.)

要快得多.

关于效率的进一步评论:df.assign()构建一个全新的数据框对象;如果你打算将这个对象重新分配到df,你最好在原地修改df:

df['Latency'] = (df.CloseTimeStamp - df.CreationTimeStamp).dt.total_seconds() * 1000.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐