gpt4 book ai didi

python - 如何计算 Python Pandas 中组的移位列

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:57 30 4
gpt4 key购买 nike

我有以下 Pandas 数据框:

    Circuit-ID  DATETIME    LATE? 
78899 07/06/2018 15:30 1
78899 08/06/2018 17:30 0
78899 09/06/2018 20:30 1
23544 12/07/2017 23:30 1
23544 13/07/2017 19:30 0
23544 14/07/2017 20:30 1

我需要计算 DATETIME 和 LATE 的偏移值?列以获得以下结果:

Circuit DATETIME          LATE?     DATETIME-1        LATE-1    
78899 07/06/2018 15:30 1 NA NA
78899 08/06/2018 17:30 0 07/06/2018 15:30 1
78899 09/06/2018 20:30 1 08/06/2018 17:30 0
23544 12/07/2017 23:30 1 NA NA
23544 13/07/2017 19:30 0 12/07/2017 23:30 1
23544 14/07/2017 20:30 1 13/07/2017 19:30 0

我尝试了以下代码:

df.groupby(['circuit ID, DATETILE', LATE? ]) \
.apply(lambda x : x.sort_values(by=['circuit ID, 'DATETILE', 'LATE?'], ascending = [True, True, True]))['LATE?'] \
.transform(lambda x:x.shift()) \
.reset_index(name= 'LATE-1')

但是在第一个移位值与 Nan 不同的某些行上,我不断得到错误的结果。您能否指出一种更干净的方法来获得所需的结果?

最佳答案

使用groupbyshift,然后将其加入:

df.join(df.groupby('Circuit-ID').shift().add_suffix('-1'))

Circuit-ID DATETIME LATE? DATETIME-1 LATE?-1
0 78899 07/06/2018 15:30 1 NaN NaN
1 78899 08/06/2018 17:30 0 07/06/2018 15:30 1.0
2 78899 09/06/2018 20:30 1 08/06/2018 17:30 0.0
3 23544 12/07/2017 23:30 1 NaN NaN
4 23544 13/07/2017 19:30 0 12/07/2017 23:30 1.0
5 23544 14/07/2017 20:30 1 13/07/2017 19:30 0.0

类似的解决方案使用 concat 进行连接:

pd.concat([df, df.groupby('Circuit-ID').shift().add_suffix('-1')], axis=1)

Circuit-ID DATETIME LATE? DATETIME-1 LATE?-1
0 78899 07/06/2018 15:30 1 NaN NaN
1 78899 08/06/2018 17:30 0 07/06/2018 15:30 1.0
2 78899 09/06/2018 20:30 1 08/06/2018 17:30 0.0
3 23544 12/07/2017 23:30 1 NaN NaN
4 23544 13/07/2017 19:30 0 12/07/2017 23:30 1.0
5 23544 14/07/2017 20:30 1 13/07/2017 19:30 0.0

关于python - 如何计算 Python Pandas 中组的移位列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54318125/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com