回答編集履歴
3
Update
answer
CHANGED
@@ -15,12 +15,12 @@
|
|
15
15
|
|
16
16
|
# 該当行の上2行のいずれかが0かつ下2行のいずれかが0なら0にする
|
17
17
|
r = r[:2] + [
|
18
|
-
r[i+2] * (
|
18
|
+
r[i+2] * any((all(r[i:(i+2)]), all(r[(i+3):(i+5)])))
|
19
19
|
for i in range(l-4)
|
20
20
|
] + r[-2:]
|
21
21
|
|
22
22
|
# 上の行も下の行も0なら0にする
|
23
|
-
r = r[:1] + [r[i+1] *
|
23
|
+
r = r[:1] + [r[i+1] * any((r[i], r[i+2])) for i in range(l-2)] + r[-1:]
|
24
24
|
|
25
25
|
# データフレームに反映
|
26
26
|
df['記録値'] = r
|
2
Update
answer
CHANGED
@@ -9,24 +9,21 @@
|
|
9
9
|
'時刻': pd.date_range("12:00", "12:14", freq="min").time,
|
10
10
|
'記録値': [0, 0, 1, 0, 3, 2, 4, 1, 2, 0, 0, 1, 3, 1, 0],
|
11
11
|
})
|
12
|
-
|
12
|
+
|
13
13
|
r = df['記録値'].tolist()
|
14
|
+
l = len(r)
|
14
15
|
|
15
|
-
#
|
16
|
+
# 該当行の上2行のいずれかが0かつ下2行のいずれかが0なら0にする
|
16
|
-
|
17
|
+
r = r[:2] + [
|
18
|
+
r[i+2] * (not ((0 in r[i:(i+2)]) and (0 in r[(i+3):(i+5)])))
|
17
|
-
for i in range(l-4)
|
19
|
+
for i in range(l-4)
|
18
|
-
x, v, y = r[i:(i+2)], r[i+2], r[(i+3):(i+5)]
|
19
|
-
rr.append(v * (not ((0 in x) and (0 in y))))
|
20
|
-
|
20
|
+
] + r[-2:]
|
21
21
|
|
22
|
-
#
|
22
|
+
# 上の行も下の行も0なら0にする
|
23
|
-
rrr = rr[:1]
|
24
|
-
for i in range(l-2):
|
25
|
-
|
23
|
+
r = r[:1] + [r[i+1] * bool(r[i] or r[i+2]) for i in range(l-2)] + r[-1:]
|
26
|
-
rrr += rr[-1:]
|
27
24
|
|
28
25
|
# データフレームに反映
|
29
|
-
df['記録値'] =
|
26
|
+
df['記録値'] = r
|
30
27
|
|
31
28
|
print(df.to_markdown(index=False))
|
32
29
|
```
|
1
Update
answer
CHANGED
@@ -16,13 +16,13 @@
|
|
16
16
|
rr, l = r[:2], len(r)
|
17
17
|
for i in range(l-4):
|
18
18
|
x, v, y = r[i:(i+2)], r[i+2], r[(i+3):(i+5)]
|
19
|
-
rr.append(
|
19
|
+
rr.append(v * (not ((0 in x) and (0 in y))))
|
20
20
|
rr += r[-2:]
|
21
21
|
|
22
22
|
# 「上の行も下の行も0なら0にする」
|
23
23
|
rrr = rr[:1]
|
24
24
|
for i in range(l-2):
|
25
|
-
rrr.append(
|
25
|
+
rrr.append(rr[i+1] * bool(rr[i] or rr[i+2]))
|
26
26
|
rrr += rr[-1:]
|
27
27
|
|
28
28
|
# データフレームに反映
|