编程语言
首页 > 编程语言> > python – Pandas分配Lambda函数

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.

标签:python,lambda,dataframe,pandas,python-datetime
来源: https://codeday.me/bug/20190611/1217240.html