使用pandas识别具有相似列的行的差异

时间:2017-05-27 14:42:42

标签: python csv pandas

我编写了一个脚本来解析csv文件。 csv文件包含ID和时间戳。

df = pd.read_csv(dataset_path, names = ['ID','TSTAMP','DIFF'], delimiter=';')
d = {'min':'TSTAMP-INIT','max':'TSTAMP-FIN'}
df = df.groupby(['UID'])['TSTAMP'].agg([min, max]).reset_index().rename(columns=d)
df['DIFF'] = (df['TSTAMP-FIN'] - df['TSTAMP-INIT'])

如果您将此视为csv文件(点表示系列中的其他元素)

    3w]{;1495714405280
...
    3w]{;1495714405340
...
    3w]{;1495714571213
...
    3w]{;1495714571317
...
    3w]{;1495714405280
...
    3w]{;1495714405340
...
    3w]{;1495714571213
...
    3w]{;1495714571317

df给出输出作为3w]{

的第一次和最后一次出现之间的差异
    UID   DIFF
0  3w]{   166037

相反,当我希望输出是连续ID的差异时。

     UID    DIFF
0    3w]{   60
1    3w]{   104
...

我错过了什么?

1 个答案:

答案 0 :(得分:0)

在UID列上,您正在聚合时间戳,然后获取该uid的最小值和最大值,然后获取差值。但是对于你的要求,选择两列,然后对它们进行排名,并使用uid和rank = rank-1对它进行自我连接。或者您可以应用Rolling()pandas方法。