gpt4 book ai didi

python - 我可以根据另一列中值的更改时间创建新列吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:15 25 4
gpt4 key购买 nike

假设我有这个 df

print(df)
DATE_TIME A B
0 10/08/2016 12:04:56 1 5
1 10/08/2016 12:04:58 1 6
2 10/08/2016 12:04:59 2 3
3 10/08/2016 12:05:00 2 2
4 10/08/2016 12:05:01 3 4
5 10/08/2016 12:05:02 3 6
6 10/08/2016 12:05:03 1 3
7 10/08/2016 12:05:04 1 2
8 10/08/2016 12:05:05 2 4
9 10/08/2016 12:05:06 2 6
10 10/08/2016 12:05:07 3 4
11 10/08/2016 12:05:08 3 2

['A'] 列中的值随时间重复,不过我需要一个列,每次更改时它们都有一个新的 ID,这样我就会得到类似下面的内容 df

print(df)
DATE_TIME A B C
0 10/08/2016 12:04:56 1 5 1
1 10/08/2016 12:04:58 1 6 1
2 10/08/2016 12:04:59 2 3 2
3 10/08/2016 12:05:00 2 2 2
4 10/08/2016 12:05:01 3 4 3
5 10/08/2016 12:05:02 3 6 3
6 10/08/2016 12:05:03 1 3 4
7 10/08/2016 12:05:04 1 2 4
8 10/08/2016 12:05:05 2 4 5
9 10/08/2016 12:05:06 2 6 5
10 10/08/2016 12:05:07 3 4 6
11 10/08/2016 12:05:08 3 2 6

有没有办法用 python 做到这一点?我对此还很陌生,希望能在 Pandas 中找到对我有帮助的东西,但我还没有找到任何东西。在我的原始数据框中,列 ['A'] 中的值大约每十分钟不规则间隔更改一次,而不是像我的示例中那样每两行更改一次。有谁知道我该如何处理这个任务?谢谢

最佳答案

您可以使用shift-cumsum 模式。

df['C'] = (df.A != df.A.shift()).cumsum()

>>> df
DATE_TIME A B C
0 10/08/2016 12:04:56 1 5 1
1 10/08/2016 12:04:58 1 6 1
2 10/08/2016 12:04:59 2 3 2
3 10/08/2016 12:05:00 2 2 2
4 10/08/2016 12:05:01 3 4 3
5 10/08/2016 12:05:02 3 6 3
6 10/08/2016 12:05:03 1 3 4
7 10/08/2016 12:05:04 1 2 4
8 10/08/2016 12:05:05 2 4 5
9 10/08/2016 12:05:06 2 6 5
10 10/08/2016 12:05:07 3 4 6
11 10/08/2016 12:05:08 3 2 6

作为旁注,这是一种流行的分组模式。例如,要获取每个此类组的平均 B 值:

df.groupby((df.A != df.A.shift()).cumsum()).B.mean()

关于python - 我可以根据另一列中值的更改时间创建新列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39112689/

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