pandasの時間条件で該当する条件の一番最初の値(int)を取得したいと考えているのですがどの様にすると良いでしょうか?
データサンプル
index | time | int |
---|---|---|
0 | 2020.05.01 02:00 | 15 |
1 | 2020.05.01 02:03 | 14 |
2 | 2020.05.01 02:11 | 19 |
3 | 2020.05.01 02:16 | 15 |
4 | 2020.05.01 02:18 | 14 |
5 | 2020.05.01 02:23 | 12 |
6 | 2020.05.01 02:26 | 18 |
7 | 2020.05.01 02:29 | 11 |
8 | 2020.05.01 02:30 | 13 |
9 | 2020.05.01 02:33 | 16 |
10 | 2020.05.01 02:37 | 11 |
11 | 2020.05.01 02:44 | 19 |
12 | 2020.05.01 03:45 | 17 |
上記データにて index 0 の time 2020.05.01 02:00 の25分後の最初の値を取得する場合。
正解は index 6, time 2020.05.01 02:26, int 18になります。
上記データにて index 2 の time 2020.05.01 02:03 の25分後の最初の値を取得する場合。
正解は index 7, time 2020.05.01 02:29, int 11になります。
上記データにて index 3 の time 2020.05.01 02:11 の25分後の最初の値を取得する場合。
正解は index 10, time 2020.05.01 02:37, int 11になります。
○○分後(今回は25分)は一定です。
timeは一定ではないのでデータをズラして値を取得する事は出来ません。
理想の結果
|index |time |int |int_25M|
|:--|:--:|--:|
|0 |2020.05.01 02:00 |15 | 18|
|1 |2020.05.01 02:03 |14 | 11|
|2 |2020.05.01 02:11 |19 | 11|
|3 |2020.05.01 02:16 |15 | 19|
|4 |2020.05.01 02:18 |14 | 19|
|5 |2020.05.01 02:23 |12 | NaN|
|6 |2020.05.01 02:26 |18 | NaN|
|7 |2020.05.01 02:29 |11 | NaN|
|8 |2020.05.01 02:30 |13 | NaN|
|9 |2020.05.01 02:33 |16 | NaN|
|10 |2020.05.01 02:37 |11 | NaN|
|11 |2020.05.01 02:44 |19 | NaN|
|12 |2020.05.01 03:45 |17 | NaN|
こんな感じのデータを出力したいと考えています。
プログラム書いては見ましたが。。。
最初読み込んだデータを二つにして一行ずつ比較すればいいのかと考えてみました。
※まずはindexが取得出来るかどうかの確認してみました。
df_1 = pd.read_csv("hogehoge.csv") df_1['time'] = pd.to_datetime(df_1['time']) df_2 = df_1 df_2['data_25m'] = df_2['time'] + dt.timedelta(minutes=25) for idx,row in df_2.iterrows(): try: df_1['int_25M'] = df_1[df_1['time'] > row['data_25m']].index[0] except: print("ありません")
結果
|index |time |int |int_25M|
|:--|:--:|--:|
|0 |2020.05.01 02:00 |15 | 12|
|1 |2020.05.01 02:03 |14 | 12|
|2 |2020.05.01 02:11 |19 | 12|
|3 |2020.05.01 02:16 |15 | 12|
|4 |2020.05.01 02:18 |14 | 12|
|5 |2020.05.01 02:23 |12 | 12|
|6 |2020.05.01 02:26 |18 | 12|
|7 |2020.05.01 02:29 |11 | 12|
|8 |2020.05.01 02:30 |13 | 12|
|9 |2020.05.01 02:33 |16 | 12|
|10 |2020.05.01 02:37 |11 | 12|
|11 |2020.05.01 02:44 |19 | 12|
|12 |2020.05.01 03:45 |17 | 12|
うまくいきませんでした。
どの様にプログラムを書くと良いでしょうか?
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/04 06:58