ver*_*era 3 python uniqueidentifier pandas
我们说我有这个 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
Run Code Online (Sandbox Code Playgroud)
列中的值['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
Run Code Online (Sandbox Code Playgroud)
有没有办法用python做到这一点?我对此仍然很陌生,并希望找到一些可以帮助我的熊猫,但我还没有找到任何东西.在我的原始数据框中,列中的值['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
Run Code Online (Sandbox Code Playgroud)
作为旁注,这是一种流行的分组模式.例如,要获取B每个此类组的平均值:
df.groupby((df.A != df.A.shift()).cumsum()).B.mean()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |