在 Python 中以更有效的方式对数据集使用 zip 操作

问题描述 投票:0回答:0

我在下面对这个数据集做这个操作:

d = pd.DataFrame({'id':      ["007",  "007", "001", "001", "008", "008", "007", "007", "009", "007", "000", "001", "009", "009", "009"], 
     'id_2': ["b",   "b",   "b",   "b",   "b",   "b",   "b",   "b", "b",   "b",   "b",
                       "c", "c", "c", "c"], 
     'userid':         ["us1", "us2", "us1", "us2", "us4", "us4", "us5", "us1", "us2", "us1", "us2", "us4", "us1", "us2", "us1"],
     "timestamp_date": [1589175687010,    1589188715313,      1589187142475,     1589187315368,      1589187155446,   1589187301028,     1589189765216,      1589190375088,
                        1589364060781,    1589421612029,      1589363453544,     1589364557808,      1589354347548,   1589356096273,     1589273208050]})



df = d.sort_values('timestamp_date')

df.groupby(['id_2', 'id'], sort=False).apply(
            lambda x: list(zip(x['userid'][:-1], x['userid'][1:],
                               x['timestamp_date'][:-1], x['timestamp_date'][1:]))).reset_index(name='duplicates')

但问题是这个操作耗时超长。只是给出一个想法,对于 400 万个寄存器,大约需要 17 分钟。

我想知道是否还有其他更有效的方法。我认为 zip 是我的测试和我在网上阅读的内容的问题,但我找不到另一种方法来实现相同的结果。

python-3.x performance dataset apply
© www.soinside.com 2019 - 2024. All rights reserved.