回答編集履歴

2

タイポを修正

2020/03/19 00:30

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- 10,12,13 の周期毎に `id` を振りたいのであれば `num` 13 から 10 への変化点だけを見て積算するとよろしいかと
85
+ 10,12,13 の周期毎に `id` を振りたいのであれば `num`値の 13 から 10 への変化点だけを見て積算するとよろしいかと
86
86
 
87
87
 
88
88
 

1

回答を修正(仕様の解釈が間違っていたため)

2020/03/19 00:30

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -69,3 +69,83 @@
69
69
  #4 3
70
70
 
71
71
  ```
72
+
73
+
74
+
75
+ ---
76
+
77
+
78
+
79
+ **【修正回答】**
80
+
81
+ kirara0048 さんと回答により仕様を完全に間違って解釈していたことが判明しましたので・・・
82
+
83
+
84
+
85
+ 10,12,13 の周期毎に `id` を振りたいのであれば `num` 13 から 10 への変化点だけを見て積算するとよろしいかと
86
+
87
+
88
+
89
+ ```Python
90
+
91
+ import pandas as pd
92
+
93
+ df = pd.DataFrame({'num': [10,10,10,10,12,12,12,12,13,13,13,10,12,12,13,13,10,10,10,10,12,12,13]})
94
+
95
+
96
+
97
+ # idを振る
98
+
99
+ df['id'] = ((df['num'].shift()!=10) & (df['num']==10)).cumsum()
100
+
101
+ print(df)
102
+
103
+ # num id
104
+
105
+ #0 10 1
106
+
107
+ #1 10 1
108
+
109
+ #2 10 1
110
+
111
+ #3 10 1
112
+
113
+ #4 12 1
114
+
115
+ #5 12 1
116
+
117
+ #6 12 1
118
+
119
+ #7 12 1
120
+
121
+ #8 13 1
122
+
123
+ #9 13 1
124
+
125
+ #10 13 1
126
+
127
+ #11 10 2
128
+
129
+ #12 12 2
130
+
131
+ #13 12 2
132
+
133
+ #14 13 2
134
+
135
+ #15 13 2
136
+
137
+ #16 10 3
138
+
139
+ #17 10 3
140
+
141
+ #18 10 3
142
+
143
+ #19 10 3
144
+
145
+ #20 12 3
146
+
147
+ #21 12 3
148
+
149
+ #22 13 3
150
+
151
+ ```