Python 数据帧内列表的元素差异

Python 数据帧内列表的元素差异,python,pandas,Python,Pandas,我有一个数据框,其中一列(LOG_TIMES)中有列表,如何创建一个具有列表元素时差(以秒为单位)的新列 DATE_RECORDED PERSON LOG_TIMES 0 2018-03-22 11:58:23.585 JOHN [15/03/2018 10:30:48, 15/03/2018 10:29:48, ... 1 2018-03-22 11:58:23.585 JOHN [20/03/2018 14:28:36, 20/03/2018

我有一个数据框,其中一列(LOG_TIMES)中有列表,如何创建一个具有列表元素时差(以秒为单位)的新列

    DATE_RECORDED           PERSON  LOG_TIMES
0   2018-03-22 11:58:23.585 JOHN    [15/03/2018 10:30:48, 15/03/2018 10:29:48, ...
1   2018-03-22 11:58:23.585 JOHN    [20/03/2018 14:28:36, 20/03/2018 14:26:36, ...
预期的输出将是datafame,其中有一列显示时间差(以秒为单位的值):


对于
df

                 DATE_RECORDED PERSON                                                        LOG_TIMES
0  2018-03-22 11:58:23.585   JOHN                       [15/03/2018 10:30:48, 15/03/2018 10:29:48]
1  2018-03-22 11:58:23.585   JOHN  [20/03/2018 14:28:36, 20/03/2018 14:26:36, 20/03/2018 14:26:30]
你需要:

df['LOG_TIMES'] = df['LOG_TIMES'].apply(lambda x: list(pd.Series([dt.datetime.strptime(y.strip(), '%d/%m/%Y %H:%M:%S') for y in x[1:-1].split(',')]).diff().astype('timedelta64[s]').dropna().mul(-1)))
输出:

    DATE_RECORDED PERSON       LOG_TIMES
0  2018-03-22 11:58:23.585   JOHN         [60.0]
1  2018-03-22 11:58:23.585   JOHN  [120.0, 6.0]
如果
df['LOG_TIMES']
已经有了
datetime
对象的列表,您只需使用:

df['LOG_TIMES'].apply(lambda x: list(pd.Series(x).diff().astype('timedelta64[s]').dropna().mul(-1)))

你能发布预期的结果吗?@HarvIpan刚刚编辑了这个问题!如果您可以发布实际值而不是假设值,那就太好了。@HarvIpan刚刚更改了它,谢谢。这返回了我:AttributeError:“list”对象没有属性“split”是
类型(df['LOG_TIMES'][0])
list
?我想是的。我通常远离像这样的问题,因为OP显然没有努力使其易于理解或解决他们的问题。要么忽视,要么在更糟糕的情况下投票关闭。一些用户只粘贴他们的代码,一些用户只粘贴他们的数据,而另一些用户仍然没有发布。这两个问题都是最好的,因为你可以直观地看到OP的问题,并通过他们发布的代码了解他们试图做什么。谢谢@HarvIpan你的解决方案工作得很好,我只需要进行一些类型转换。
df['LOG_TIMES'].apply(lambda x: list(pd.Series(x).diff().astype('timedelta64[s]').dropna().mul(-1)))