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