pandas:基于一列中的值计算的列

时间:2014-06-08 07:02:52

标签: python pandas data-analysis

我在csv文件中有这样的列(我使用read_csv('fileA.csv', parse_dates=['ProcessA_Timestamp'])加载<)

Item    ProcessA_Timestamp
'A'    2014-06-08 03:32:20
'B'    2014-06-08 03:32:20
'A'    2014-06-08 03:33:19
'C'    2014-06-08 03:33:20
'B'    2014-06-08 03:33:40
'D'    2014-06-08 03:38:20

如何创建名为ProcessA_ProcessingTime的列,这将是表格- 第一个<项目> 最后时间之间的时差/ strong>表格中出现的时间。

同样,我有其他数据框(我不确定它们是否应该合并到一个数据框中)..它们有自己的Process*_Timestamp s。

最后,我需要创建一个表,其中数据如下:

Item ProcessA_ProcessingTime ProcessB_ProcessingTime ... ProcessX_ProcessingTime
'A'                 00:00:59                  ...
'B'                 00:01:21
'C'         NOT FINISHED YET
'D'         NOT FINISHED YET

1 个答案:

答案 0 :(得分:1)

您可以使用pandas groupby-apply组合。将数据帧分组为&#34;项目&#34;并应用计算处理时间的函数。类似的东西:

import pandas as pd

def calc_process_time(row):
    ts = row["ProcessA_Timestamp].values
    if len(ts) == 1:
        return pd.NaT
    else:
        return ts[-1] - ts[0] #last time - first time

df.groupby("Item").apply(calc_process_time)