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

質問編集履歴

3

一つ前の修正を元に戻しました

2020/10/28 23:19

投稿

taro_yamada
taro_yamada

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  以下のようなpandasのデータに対して、以下のような処理をしたいと考えています。
2
2
 
3
3
  <書きたいコード>
4
- signalが2のレコードの同一symbolのtimedelta(10)秒経過一番早いレコードのsignalを1に置き換える。
4
+ signalが2のレコードの同一symbolのtimedelta(10)秒経過前の一番最後のレコードのsignalを1に置き換える。
5
5
 
6
6
 
7
7
  ```csv
@@ -22,9 +22,9 @@
22
22
  2020-10-23 00:00:02.022399+00:00 3922 0
23
23
  2020-10-23 00:00:02.032578+00:00 4436 0
24
24
  2020-10-23 00:00:09.293038+00:00 4393 0
25
- 2020-10-23 00:00:09.299666+00:00 2160 0
25
+ 2020-10-23 00:00:09.299666+00:00 2160 0←ここの0を1に置き換えたい
26
26
  2020-10-23 00:00:09.299666+00:00 1431 0
27
- 2020-10-23 00:00:09.315364+00:00 7779 0 
27
+ 2020-10-23 00:00:09.315364+00:00 7779 0←ここの0を1に置き換えたい 
28
28
  2020-10-23 00:00:09.331052+00:00 9467 0
29
29
  2020-10-23 00:00:09.331052+00:00 3663 0
30
30
  2020-10-23 00:00:09.415579+00:00 2160 0 
@@ -36,9 +36,9 @@
36
36
  2020-10-23 00:00:15.580064+00:00 4436 0
37
37
  2020-10-23 00:00:15.590341+00:00 3359 0
38
38
  2020-10-23 00:00:15.673560+00:00 4393 0
39
- 2020-10-23 00:00:15.681706+00:00 2160 0←ここの0を1に置き換えたい
39
+ 2020-10-23 00:00:15.681706+00:00 2160 0
40
40
  2020-10-23 00:00:15.693816+00:00 7353 0
41
- 2020-10-23 00:00:15.704075+00:00 7779 0←ここの0を1に置き換えたい
41
+ 2020-10-23 00:00:15.704075+00:00 7779 0
42
42
  2020-10-23 00:00:15.714524+00:00 9467 0
43
43
  2020-10-23 00:00:15.722784+00:00 4051 0
44
44
  2020-10-23 00:00:15.735338+00:00 3922 0

2

条件を修正しました。

2020/10/28 23:19

投稿

taro_yamada
taro_yamada

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  以下のようなpandasのデータに対して、以下のような処理をしたいと考えています。
2
2
 
3
3
  <書きたいコード>
4
- signalが2のレコードの同一symbolのtimedelta秒以内のうち一番いレコードのsignalを1に置き換える。
4
+ signalが2のレコードの同一symbolのtimedelta(10)経過後一番いレコードのsignalを1に置き換える。
5
5
 
6
6
 
7
7
  ```csv
@@ -24,10 +24,10 @@
24
24
  2020-10-23 00:00:09.293038+00:00 4393 0
25
25
  2020-10-23 00:00:09.299666+00:00 2160 0
26
26
  2020-10-23 00:00:09.299666+00:00 1431 0
27
- 2020-10-23 00:00:09.315364+00:00 7779 0 ←ここの0を1に置き換えたい
27
+ 2020-10-23 00:00:09.315364+00:00 7779 0 
28
28
  2020-10-23 00:00:09.331052+00:00 9467 0
29
29
  2020-10-23 00:00:09.331052+00:00 3663 0
30
- 2020-10-23 00:00:09.415579+00:00 2160 0 ←ここの0を1に置き換えたい
30
+ 2020-10-23 00:00:09.415579+00:00 2160 0 
31
31
  2020-10-23 00:00:09.415579+00:00 9467 0
32
32
  2020-10-23 00:00:09.431199+00:00 4051 0
33
33
  2020-10-23 00:00:09.493694+00:00 4393 0
@@ -36,9 +36,9 @@
36
36
  2020-10-23 00:00:15.580064+00:00 4436 0
37
37
  2020-10-23 00:00:15.590341+00:00 3359 0
38
38
  2020-10-23 00:00:15.673560+00:00 4393 0
39
- 2020-10-23 00:00:15.681706+00:00 2160 0
39
+ 2020-10-23 00:00:15.681706+00:00 2160 0←ここの0を1に置き換えたい
40
40
  2020-10-23 00:00:15.693816+00:00 7353 0
41
- 2020-10-23 00:00:15.704075+00:00 7779 0
41
+ 2020-10-23 00:00:15.704075+00:00 7779 0←ここの0を1に置き換えたい
42
42
  2020-10-23 00:00:15.714524+00:00 9467 0
43
43
  2020-10-23 00:00:15.722784+00:00 4051 0
44
44
  2020-10-23 00:00:15.735338+00:00 3922 0

1

自分なりにコードを書き進めて、行き詰まった部分のみの質問に改めました。

2020/10/28 23:02

投稿

taro_yamada
taro_yamada

スコア55

title CHANGED
File without changes
body CHANGED
@@ -49,14 +49,16 @@
49
49
  ```
50
50
 
51
51
  <試したこと>
52
+ 10/28修正
52
- 以下のコードを書いてみましたが、以エラーコード先に進めませんでした。
53
+ 以下のコードを書いてみましたが、later_signalが2の時だけsignalを1に置き換える(それ場合はsignalを書き換えない)applyの部分を書くことがませんでした。
54
+ ここの記載方法をご教示いただけないでしょうか?
53
- れ以下コード正直うまく書けていると思えません。どなたかアドバイスをお願いします。
55
+ もし、もそも記載方法に誤りがあればご指摘もお願いします。
54
- KeyError: 'currentpricetime'
55
56
 
56
57
  ```python
57
58
  # 指定秒後のシグナルを置き換え
58
- for symbol, df_s in df_result.groupby('symbol'):
59
+ for symbol, df_s in df.groupby('symbol'):
59
- df_s = df_s.sort_values(['currentpricetime'])
60
+ df_s = df_s.sort_values(['currentpricetime'])
60
- df_s.set_index('currentpricetime')['currentpricetime'].asof(df_s['currentpricetime'] + pd.Timedelta(timedelta))
61
+ later_signal=df_s.set_index('currentpricetime')['signal'].asof(df_s['currentpricetime'] - pd.Timedelta(timedelta)).array
61
- df_result.loc[df_s.later10s_time, 'signal'] = 1
62
+ df.loc[df_s.index, 'later_signal'] = later_signal
63
+ df['signal'] = df['later_signal'].apply((lambda x: 1 if x == 2 else None))
62
64
  ```