質問するログイン新規登録

回答編集履歴

3

誤字修正

2019/08/28 11:04

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  以下のような操作でいけそうな気がします。
2
2
 
3
- - まずは提示方法で補(内挿)する
3
+ - まずは提示方法で補(内挿)する
4
- - 補前がnan かつ 補後の前後の行の値のいずれかがnan である行を特定する
4
+ - 補前がnan かつ 補後の前後の行の値のいずれかがnan である行を特定する
5
- - 上記の行なら補後の値を`nan`に戻す。
5
+ - 上記の行なら補後の値を`nan`に戻す。
6
6
 
7
7
  以下、単純例での行の特定例です。
8
8
  ```Python
@@ -24,7 +24,7 @@
24
24
  2022-12-31 NaN
25
25
  """
26
26
 
27
- # まずは補する
27
+ # まずは補する
28
28
  df2 = df1.interpolate(limit=1, method="time", limit_area='inside', limit_direction="backward")
29
29
  print(df2)
30
30
  """
@@ -38,7 +38,7 @@
38
38
  2022-12-31 NaN
39
39
  """
40
40
 
41
- # 補前がnan かつ 補後の前後の値のいずれかがnan
41
+ # 補前がnan かつ 補後の前後の値のいずれかがnan
42
42
  sr = np.isnan(df1[0]) & ( np.isnan(df2[0].shift(-1)) | np.isnan(df2[0].shift(1)) )
43
43
  print(sr)
44
44
  """

2

修正

2019/08/28 11:04

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  以下のような操作でいけそうな気がします。
2
2
 
3
3
  - まずは提示方法で補完(内挿)する
4
- - 補完前がnan かつ 補完後の前後の値のいずれかがnan である行を特定する
4
+ - 補完前がnan かつ 補完後の前後の行の値のいずれかがnan である行を特定する
5
5
  - 上記の行なら補完後の値を`nan`に戻す。
6
6
 
7
7
  以下、単純例での行の特定例です。

1

コード修正

2019/08/25 02:13

投稿

8524ba23
8524ba23

スコア38350

answer CHANGED
@@ -24,6 +24,7 @@
24
24
  2022-12-31 NaN
25
25
  """
26
26
 
27
+ # まずは補完する
27
28
  df2 = df1.interpolate(limit=1, method="time", limit_area='inside', limit_direction="backward")
28
29
  print(df2)
29
30
  """
@@ -49,6 +50,21 @@
49
50
  2021-12-31 False
50
51
  2022-12-31 True
51
52
  """
53
+
54
+ # 上記の条件を満たす行にnanをセット
55
+ df3 = df2.copy()
56
+ df3[0][sr] = nan
57
+ print(df3)
58
+ """
59
+ 0
60
+ 2016-12-31 NaN
61
+ 2017-12-31 NaN
62
+ 2018-12-31 1.000000
63
+ 2019-12-31 2.000000
64
+ 2020-12-31 2.500684
65
+ 2021-12-31 3.000000
66
+ 2022-12-31 NaN
67
+ """
52
68
  ```
53
69
 
54
70
  上記の考えを元に提示例を変換した結果は以下になります。